From: Neil Brown <neilb@suse.de>
To: Bill Davidsen <davidsen@tmr.com>
Cc: "Mr. James W. Laferriere" <babydr@baby-dragons.com>,
linux-raid maillist <linux-raid@vger.kernel.org>
Subject: Re: ANNOUNCE: mdadm 3.0 - A tool for managing Soft RAID under Linux
Date: Tue, 9 Jun 2009 09:36:30 +1000 [thread overview]
Message-ID: <18989.41086.680592.282765@notabene.brown> (raw)
In-Reply-To: message from Bill Davidsen on Saturday June 6
On Saturday June 6, davidsen@tmr.com wrote:
> Neil Brown wrote:
> > On Wednesday June 3, babydr@baby-dragons.com wrote:
> >
> >> Hello Neil , I am getting a interesting Error during compiling 3.0 .
> >> Is there a particular version of kernel that 3.0 is supposed to be
> >> compiled with ?
> >>
> >
> > This has nothing to do with kernel version. You must be using a
> > different compiler version - it is picking up an error that might
> > didn't.
> >
> > The fix is below.
> > Thanks,
> > NeilBrown
> >
> >
> >
> >> Tia , JimL
> >>
> >> gcc -Wall -Werror -Wstrict-prototypes -ggdb -DSendmail=\""/usr/sbin/sendmail
> >> -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -c
> >> -o super-intel.o super-intel.c
> >> cc1: warnings being treated as errors
> >> super-intel.c: In function 'mark_failure':
> >> super-intel.c:3632: warning: comparison is always false due to limited range of
> >> data type
> >> make: *** [super-intel.o] Error 1
> >>
> >>
> >
> > commit 4291d691b66f65695b5b4be22b80fd00da73b544
> > Author: NeilBrown <neilb@suse.de>
> > Date: Thu Jun 4 12:29:21 2009 +1000
> >
> > super-intel: fix test on failed_disk_num.
> >
> > We sometimes set failed_disk_num to ~0.
> > However we cannot test for equality with that as failed_disk_num
> > is 8bit and ~0 is probably 32bit with lots of 1's.
> > So test if ~failed_disk_num is 0 instead.
> >
> > Reported-By: "Mr. James W. Laferriere" <babydr@baby-dragons.com>
> > Signed-off-by: NeilBrown <neilb@suse.de>
> >
> > diff --git a/super-intel.c b/super-intel.c
> > index 73fe5fa..7e2a086 100644
> > --- a/super-intel.c
> > +++ b/super-intel.c
> > @@ -3629,7 +3629,7 @@ static int mark_failure(struct imsm_dev *dev, struct imsm_disk *disk, int idx)
> >
> > disk->status |= FAILED_DISK;
> > set_imsm_ord_tbl_ent(map, slot, idx | IMSM_ORD_REBUILD);
> > - if (map->failed_disk_num == ~0)
> > + if (~map->failed_disk_num == 0)
> > map->failed_disk_num = slot;
> > return 1;
> > }
> >
>
> I still don't think this is really portable, the zero should be cast
> using typeof.
????
zero is zero is zero.
A cast will either add zero bits or remove zero bits, the net result
is always the same.
"-1" is different. Casting it could add zeros or ones depending on
whether it seems to be signed at the time. That was the original
problem. failed_disk_num is unsigned 8 bits. So when we assign ~0
to it, it becomes 0b11111111.
But when it is implicitly cast to an int for the comparison, it
becomes
0b00000000000000000000000011111111
which is very different from ~0 which is
0b11111111111111111111111111111111
So I stand by the new code.
Thanks,
NeilBrown
prev parent reply other threads:[~2009-06-08 23:36 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-02 5:50 ANNOUNCE: mdadm 3.0 - A tool for managing Soft RAID under Linux Neil Brown
2009-06-02 20:11 ` Jeff Garzik
2009-06-02 22:58 ` Dan Williams
2009-06-03 3:56 ` Neil Brown
2009-06-03 13:01 ` Anton Altaparmakov
2009-06-03 22:59 ` Neil Brown
2009-06-04 9:00 ` Anton Altaparmakov
2009-06-03 14:42 ` Heinz Mauelshagen
2009-06-03 17:26 ` [dm-devel] " Dan Williams
2009-06-04 16:38 ` Heinz Mauelshagen
2009-06-08 23:32 ` [dm-devel] " Neil Brown
2009-06-09 16:29 ` Heinz Mauelshagen
2009-06-04 15:33 ` Larry Dickson
2009-06-04 1:52 ` Mr. James W. Laferriere
2009-06-04 2:30 ` Neil Brown
2009-06-06 23:15 ` Bill Davidsen
2009-06-08 23:36 ` Neil Brown [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18989.41086.680592.282765@notabene.brown \
--to=neilb@suse.de \
--cc=babydr@baby-dragons.com \
--cc=davidsen@tmr.com \
--cc=linux-raid@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).