On Thu, 10 Oct 2013 09:42:04 +0200 Jes.Sorensen@xxxxxxxxxx wrote: > From: Jes Sorensen <Jes.Sorensen@xxxxxxxxxx> > > Hi, > > There are multiple ways to solve this one, but I think this is the > least intrusive solution, even if not the prettiest. > > Problem is that current macros simply return the original value if cpu > byteorder equals the converted type, leaking through the original > type. This results in errors like this when building for PPC64, as an > example: > > gcc -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -DMAP_DIR=\"/run/mdadm\" -DMAP_FILE=\"map\" -DMDMON_DIR=\"/run/mdadm\" -DFAILED_SLOTS_DIR=\"/run/mdadm/failed-slots\" -DUSE_PTHREADS -c -o super-intel.o super-intel.c > super-ddf.c: In function 'examine_vd': > super-ddf.c:1414:10: error: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type '__u64' [-Werror=format=] > be64_to_cpu(vc->blocks)/2); > ^ > > We could force the macros to all return u16/u32/u64, which would be > 'cleaner'. However I suspect that would make us chase a pile of build > warnings converting all printf's to explicitly cast. So I made them > return the same types as our byteswap macros default to (hence the > unsigned int return type for the 16 bit swaps). > > Jes Looks good. Applied. Thanks. NeilBrown
Attachment:
signature.asc
Description: PGP signature