Hey, This is v3. I changed to manual barriers as requested and commented them. --- I've recently looked for some free space in struct inode again because of some exec kerfuffle we recently had and while my idea didn't turn into anything I noticed that we often waste bytes when using wait bit operations. So I set out to switch that to another mechanism that would allow us to free up bytes. So this is an attempt to turn i_state from an unsigned long into an u32 using the individual bytes of i_state as addresses for the wait var event mechanism (Thanks to Linus for that idea.). This survives LTP, xfstests on various filesystems, and will-it-scale. To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Cc: NeilBrown <neilb@xxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: Jeff Layton <jlayton@xxxxxxxxxx> Cc: Jan Kara <jack@xxxxxxx> Cc: Christian Brauner <brauner@xxxxxxxxxx> Cc: linux-fsdevel@xxxxxxxxxxxxxxx Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> --- Changes in v3: - Use manual barrier. - Link to v2: https://lore.kernel.org/r/20240821-work-i_state-v2-0-67244769f102@xxxxxxxxxx Changes in v2: - Actually send out the correct branch. - Link to v1: https://lore.kernel.org/r/20240816-vfs-misc-dio-v1-1-80fe21a2c710@xxxxxxxxxx --- --- base-commit: 01e603fb789c75b3a0c63bddd42a42a710da7a52 change-id: 20240820-work-i_state-4e34db39bcf8