Messages in this thread | | | Subject | Re: [PATCH] bcachefs: Rename struct field swap to prevent macro naming collision | From | Thorsten Blum <> | Date | Sat, 6 Apr 2024 23:21:37 +0200 |
| |
On 6. Apr 2024, at 20:48, Kent Overstreet <kent.overstreet@linux.dev> wrote: > > On Sat, Apr 06, 2024 at 04:19:20PM +0200, Thorsten Blum wrote: >> The struct field swap can collide with the swap() macro defined in >> linux/minmax.h. Rename the struct field to prevent such collisions. > > Same as in lib/sort.c, so what's the actual reason?
I included <linux/minmax.h> in arch/m68k/include/asm/bitops.h (to use the min() macro), but received the following error:
fs/bcachefs/eytzinger.c: In function ‘do_swap’: fs/bcachefs/eytzinger.c:128:69: error: macro "swap" passed 3 arguments, but takes just 2 128 | ((const struct wrapper *)priv)->swap(a, b, (int)size); | ^ In file included from ./arch/m68k/include/asm/bitops.h:16, from ./include/linux/bitops.h:68, from fs/bcachefs/eytzinger.h:5, from fs/bcachefs/eytzinger.c:3: /include/linux/minmax.h:270: note: macro "swap" defined here 270 | #define swap(a, b) \ | fs/bcachefs/eytzinger.c:128:47: warning: statement with no effect [-Wunused-value] 128 | ((const struct wrapper *)priv)->swap(a, b, (int)size); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ make[4]: *** [scripts/Makefile.build:244: fs/bcachefs/eytzinger.o] Error 1 make[3]: *** [scripts/Makefile.build:485: fs/bcachefs] Error 2
I thought about using #undef swap, but renaming it seemed to be the least disruptive change. Maybe there's a better solution?
Thanks, Thorsten
| |