Re: [PATCH] ANNOUNCE: mdadm 2.5.1 - A tool for managing Soft RAID under Linux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bill Davidsen wrote:
Paul Clements wrote:

Neil Brown wrote:


I am pleased to announce the availability of
   mdadm version 2.5.1

and here's another patch for a compile error on ppc...

Since ppc is big endian, the compiler is complaining because it can't determine whether the isuper post-increment (++) is actually going to be evaluated (__le32_to_cpu is a macro). On x86 the macro is a no-op, so I guess the compiler is smart enough to figure out that the post-increment is actually happening?

Here's the warning (gcc 3.2.3):

$ make
gcc -Wall -Werror -Wstrict-prototypes -ggdb -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -c -o super1.o super1.c
cc1: warnings being treated as errors
super1.c: In function `calc_sb_1_csum':
super1.c:128: warning: operation on `isuper' may be undefined
super1.c:128: warning: operation on `isuper' may be undefined
super1.c:128: warning: operation on `isuper' may be undefined
make: *** [super1.o] Error 1


Thanks,
Paul
--- super1.c	2006-06-19 05:17:36.000000000 -0400
+++ /export/public/clemep/tmp/super1-ppc-compile-error.c	2006-06-19 00:40:26.000000000 -0400
@@ -124,8 +124,11 @@ static unsigned int calc_sb_1_csum(struc
 	disk_csum = sb->sb_csum;
 	sb->sb_csum = 0;
 	newcsum = 0;
-	for (i=0; size>=4; size -= 4 )
-		newcsum += __le32_to_cpu(*isuper++);
+	for (i=0; size>=4; size -= 4 ) {
+		unsigned int *x = isuper;
+		newcsum += __le32_to_cpu(*x);
+		x++;
+	}
 
 	if (size == 2)
 		newcsum += __le16_to_cpu(*(unsigned short*) isuper);

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux