On Tue, 20 Aug 2024 at 09:07, Christian Brauner <brauner@xxxxxxxxxx> wrote: > > > +struct wait_queue_head *inode_bit_waitqueue(struct wait_bit_queue_entry *wqe, > + struct inode *inode, int bit); > +{ > + struct wait_queue_head *wq_head; > + void *bit_address; > + > + bit_address = inode_state_wait_address(inode, __I_SYNC); Shouldn't that '__I_SYNC' be 'bit' instead? Now it always uses the __I_SYNC wait address, but: > +static inline void inode_wake_up_bit(struct inode *inode, unsigned int bit) > +{ > + /* Ensure @bit will be seen cleared/set when caller is woken up. */ > + smp_mb(); > + wake_up_var(inode_state_wait_address(inode, bit)); > +} This uses the 'bit' wait address as expected. Linus