--- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -3217,8 +3217,9 @@ static inline void inode_dio_begin(struc */ static inline void inode_dio_end(struct inode *inode) { - if (atomic_dec_and_test(&inode->i_dio_count)) - wake_up_bit(&inode->i_state, __I_DIO_WAKEUP); + atomic_dec(&inode->i_dio_count); + smp_mb__after_atomic(); + wake_up_bit(&inode->i_state, __I_DIO_WAKEUP); } /*