2014-06-14 23:08:41

by Martin Kepplinger

[permalink] [raw]
Subject: [PATCH] drbd: change one-bit bitfield to be an unsigned int

The one-bit bitfield has no negative values and thus becomes an
unsigned int.

Signed-off-by: Martin Kepplinger <[email protected]>
---
No idea if you take such small changes. Please ignore if not.
This applies to next-20140613 and fixes a sparse error.


drivers/block/drbd/drbd_interval.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/block/drbd/drbd_interval.h b/drivers/block/drbd/drbd_interval.h
index f38fcb0..68b4301 100644
--- a/drivers/block/drbd/drbd_interval.h
+++ b/drivers/block/drbd/drbd_interval.h
@@ -9,8 +9,8 @@ struct drbd_interval {
sector_t sector; /* start sector of the interval */
unsigned int size; /* size in bytes */
sector_t end; /* highest interval end in subtree */
- int local:1 /* local or remote request? */;
- int waiting:1;
+ unsigned int local:1 /* local or remote request? */;
+ unsigned int waiting:1;
};

static inline void drbd_clear_interval(struct drbd_interval *i)
--
1.7.10.4


2014-06-15 00:46:33

by Martin Kepplinger

[permalink] [raw]
Subject: [PATCH v2] drbd: change one-bit bitfield to be an unsigned int

The one-bit bitfield has no negative values and thus becomes an
unsigned int.

Signed-off-by: Martin Kepplinger <[email protected]>
---
Sorry for the visually ugly first patch. Take this one, if any.

thanks,
martin


drivers/block/drbd/drbd_interval.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/block/drbd/drbd_interval.h b/drivers/block/drbd/drbd_interval.h
index f38fcb0..8d670e6 100644
--- a/drivers/block/drbd/drbd_interval.h
+++ b/drivers/block/drbd/drbd_interval.h
@@ -9,8 +9,8 @@ struct drbd_interval {
sector_t sector; /* start sector of the interval */
unsigned int size; /* size in bytes */
sector_t end; /* highest interval end in subtree */
- int local:1 /* local or remote request? */;
- int waiting:1;
+ unsigned int local:1; /* local or remote request? */
+ unsigned int waiting:1;
};

static inline void drbd_clear_interval(struct drbd_interval *i)
--
1.7.10.4

2014-06-16 09:29:03

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH v2] drbd: change one-bit bitfield to be an unsigned int

On Sun, 15 Jun 2014, Martin Kepplinger wrote:

> The one-bit bitfield has no negative values and thus becomes an
> unsigned int.
>
> Signed-off-by: Martin Kepplinger <[email protected]>

I'm unsure what you're correcting here. These bitfields are inherently
signed, "int local:1" and "int waiting:1" are signed. They can have one
of two values, 0 or -1. So I don't know what you're saying in your
changelog.

This patch would only make sense if something is testing `local' or
`waiting' to be equal to 1. Is that what you're fixing? If so, please
specify it in the changelog with an example.

> ---
> Sorry for the visually ugly first patch. Take this one, if any.
>
> thanks,
> martin
>
>
> drivers/block/drbd/drbd_interval.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/block/drbd/drbd_interval.h b/drivers/block/drbd/drbd_interval.h
> index f38fcb0..8d670e6 100644
> --- a/drivers/block/drbd/drbd_interval.h
> +++ b/drivers/block/drbd/drbd_interval.h
> @@ -9,8 +9,8 @@ struct drbd_interval {
> sector_t sector; /* start sector of the interval */
> unsigned int size; /* size in bytes */
> sector_t end; /* highest interval end in subtree */
> - int local:1 /* local or remote request? */;
> - int waiting:1;
> + unsigned int local:1; /* local or remote request? */
> + unsigned int waiting:1;
> };
>
> static inline void drbd_clear_interval(struct drbd_interval *i)

2014-06-17 06:54:47

by Martin Kepplinger

[permalink] [raw]
Subject: [PATCH v2] drbd: change one-bit bitfield to be an unsigned int

The one-bit bitfields are assigned true (1) or false (0) and checked
for them respectively. While it should work either way and -1 is true
as well it is more clear to see what's going on when using an unsigned int
because 1 doesn't silently become -1 behind the label true.

Signed-off-by: Martin Kepplinger <[email protected]>
---
Thanks for looking at it. This is more of a question: Does this make sense
to you now? I can be mistaken. It just wasn't totally clear to me at first
sight and even though it should be, why not try to improve it.

sparse called it 'dubious' before the change.

(built but untested)

drivers/block/drbd/drbd_interval.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/block/drbd/drbd_interval.h b/drivers/block/drbd/drbd_interval.h
index f38fcb0..8d670e6 100644
--- a/drivers/block/drbd/drbd_interval.h
+++ b/drivers/block/drbd/drbd_interval.h
@@ -9,8 +9,8 @@ struct drbd_interval {
sector_t sector; /* start sector of the interval */
unsigned int size; /* size in bytes */
sector_t end; /* highest interval end in subtree */
- int local:1 /* local or remote request? */;
- int waiting:1;
+ unsigned int local:1; /* local or remote request? */
+ unsigned int waiting:1;
};

static inline void drbd_clear_interval(struct drbd_interval *i)
--
1.7.10.4

2014-06-17 10:53:53

by Lars Ellenberg

[permalink] [raw]
Subject: Re: [Drbd-dev] [PATCH v2] drbd: change one-bit bitfield to be an unsigned int

On Tue, Jun 17, 2014 at 08:54:07AM +0200, Martin Kepplinger wrote:
> The one-bit bitfields are assigned true (1) or false (0) and checked
> for them respectively. While it should work either way and -1 is true
> as well it is more clear to see what's going on when using an unsigned int
> because 1 doesn't silently become -1 behind the label true.
>
> Signed-off-by: Martin Kepplinger <[email protected]>
> ---
> Thanks for looking at it. This is more of a question: Does this make sense
> to you now? I can be mistaken. It just wasn't totally clear to me at first
> sight and even though it should be, why not try to improve it.
>
> sparse called it 'dubious' before the change.
>
> (built but untested)

Patch is completely pointless, really,
and I don't get the motivation for it at all.
BUT.

If it makes someone happy,
and since all of our other bitfields in fact are declared "unsigned xyz:N",
for consistency we can make this unsigned as well.
Will probably fold this with some upcoming change in that struct anyways.

Lars

>
> drivers/block/drbd/drbd_interval.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/block/drbd/drbd_interval.h b/drivers/block/drbd/drbd_interval.h
> index f38fcb0..8d670e6 100644
> --- a/drivers/block/drbd/drbd_interval.h
> +++ b/drivers/block/drbd/drbd_interval.h
> @@ -9,8 +9,8 @@ struct drbd_interval {
> sector_t sector; /* start sector of the interval */
> unsigned int size; /* size in bytes */
> sector_t end; /* highest interval end in subtree */
> - int local:1 /* local or remote request? */;
> - int waiting:1;
> + unsigned int local:1; /* local or remote request? */
> + unsigned int waiting:1;
> };
>
> static inline void drbd_clear_interval(struct drbd_interval *i)

2014-06-17 19:46:48

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH v2] drbd: change one-bit bitfield to be an unsigned int

On Tue, 17 Jun 2014, Martin Kepplinger wrote:

> The one-bit bitfields are assigned true (1) or false (0) and checked
> for them respectively. While it should work either way and -1 is true
> as well it is more clear to see what's going on when using an unsigned int
> because 1 doesn't silently become -1 behind the label true.
>

Nothing is silently becoming anything, I have no idea what you're trying
to address. Is there something in drivers/block/drbd that needs this
change?

> Signed-off-by: Martin Kepplinger <[email protected]>
> ---
> Thanks for looking at it. This is more of a question: Does this make sense
> to you now? I can be mistaken. It just wasn't totally clear to me at first
> sight and even though it should be, why not try to improve it.
>

There's no improvement here, you realize that the sign of one-bit
bitfields are implementation defined, correct? On what implementation
does this patch make a difference?

If you are trying to convert these to unsigned for consistency, then just
say so in the changelog and don't talk about silent changes or comparisons
to true and false that obfuscate the fact that this is just a trivial
cleanup that is based on the author's own preference rather than anything
else.

> sparse called it 'dubious' before the change.
>
> (built but untested)
>
> drivers/block/drbd/drbd_interval.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/block/drbd/drbd_interval.h b/drivers/block/drbd/drbd_interval.h
> index f38fcb0..8d670e6 100644
> --- a/drivers/block/drbd/drbd_interval.h
> +++ b/drivers/block/drbd/drbd_interval.h
> @@ -9,8 +9,8 @@ struct drbd_interval {
> sector_t sector; /* start sector of the interval */
> unsigned int size; /* size in bytes */
> sector_t end; /* highest interval end in subtree */
> - int local:1 /* local or remote request? */;
> - int waiting:1;
> + unsigned int local:1; /* local or remote request? */
> + unsigned int waiting:1;
> };
>
> static inline void drbd_clear_interval(struct drbd_interval *i)

2014-06-18 05:51:00

by Martin Kepplinger

[permalink] [raw]
Subject: Re: [PATCH v2] drbd: change one-bit bitfield to be an unsigned int

Am 2014-06-17 21:46, schrieb David Rientjes:
> On Tue, 17 Jun 2014, Martin Kepplinger wrote:
>
>> The one-bit bitfields are assigned true (1) or false (0) and checked
>> for them respectively. While it should work either way and -1 is true
>> as well it is more clear to see what's going on when using an unsigned int
>> because 1 doesn't silently become -1 behind the label true.
>>
>
> Nothing is silently becoming anything, I have no idea what you're trying
> to address. Is there something in drivers/block/drbd that needs this
> change?

nope.

>
>> Signed-off-by: Martin Kepplinger <[email protected]>
>> ---
>> Thanks for looking at it. This is more of a question: Does this make sense
>> to you now? I can be mistaken. It just wasn't totally clear to me at first
>> sight and even though it should be, why not try to improve it.
>>
>
> There's no improvement here, you realize that the sign of one-bit
> bitfields are implementation defined, correct? On what implementation
> does this patch make a difference?
>
> If you are trying to convert these to unsigned for consistency, then just
> say so in the changelog and don't talk about silent changes or comparisons
> to true and false that obfuscate the fact that this is just a trivial
> cleanup that is based on the author's own preference rather than anything
> else.

learning learning learning. in this case, why sparse calls this dubious.
This would be more appropriate on kernelnewbies or the like, sorry.

>
>> sparse called it 'dubious' before the change.
>>
>> (built but untested)
>>
>> drivers/block/drbd/drbd_interval.h | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/block/drbd/drbd_interval.h b/drivers/block/drbd/drbd_interval.h
>> index f38fcb0..8d670e6 100644
>> --- a/drivers/block/drbd/drbd_interval.h
>> +++ b/drivers/block/drbd/drbd_interval.h
>> @@ -9,8 +9,8 @@ struct drbd_interval {
>> sector_t sector; /* start sector of the interval */
>> unsigned int size; /* size in bytes */
>> sector_t end; /* highest interval end in subtree */
>> - int local:1 /* local or remote request? */;
>> - int waiting:1;
>> + unsigned int local:1; /* local or remote request? */
>> + unsigned int waiting:1;
>> };
>>
>> static inline void drbd_clear_interval(struct drbd_interval *i)
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>