linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

      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).