On Mon, Feb 01, 2021 at 03:49:20PM -0800, Amy Parker wrote: > Hello filesystem developers! > > I was scouting through the FreeVXFS code, when I came across this in > fs/freevxfs/vxfs.h: > > enum vxfs_mode { > VXFS_ISUID = 0x00000800, /* setuid */ > VXFS_ISGID = 0x00000400, /* setgid */ > VXFS_ISVTX = 0x00000200, /* sticky bit */ > VXFS_IREAD = 0x00000100, /* read */ > VXFS_IWRITE = 0x00000080, /* write */ > VXFS_IEXEC = 0x00000040, /* exec */ > > Especially in an expanded form like this, these are ugly to read, and > a pain to work with. I would personally just change those to use the constants in include/uapi/linux/stat.h. They're userspace ABI and I don't think anyone's going to come up with a good reason to change the numbering after nearly 50 years. That said, on the general principle of "anything you touch you get to QA" I would leave it alone. --D > > An example of potentially a better method, from fs/dax.c: > > #define DAX_SHIFT (4) > #define DAX_LOCKED (1UL << 0) > #define DAX_PMD (1UL << 1) > #define DAX_ZERO_PAGE (1UL << 2) > #define DAX_EMPTY (1UL << 3) > > Pardon the space condensation - my email client is not functioning properly. > > Anyways, I believe using bit shifts to represent different file modes > would be a much better idea - no runtime penalty as they get > calculated into constants at compile time, and significantly easier > for the average user to read. > > Any thoughts on this? > > Best regards, > Amy Parker > (she/her/hers)