Message ID | 8ffd293acee0e4c823a4ed1e4e5672981d614d72.1723043969.git.fdmanana@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [for,6.10,stable] btrfs: fix double inode unlock for direct IO sync writes | expand |
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 35ce1c810bd3..ca434f0cd27f 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -2080,7 +2080,10 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) out_release_extents: btrfs_release_log_ctx_extents(&ctx); - btrfs_inode_unlock(BTRFS_I(inode), BTRFS_ILOCK_MMAP); + if (skip_ilock) + up_write(&BTRFS_I(inode)->i_mmap_lock); + else + btrfs_inode_unlock(BTRFS_I(inode), BTRFS_ILOCK_MMAP); goto out; }