diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 7b8b1bd0ca39d21c2d3c354bb24bbfa1fd631c81..3a1b6e1209594e9558e504e385c5163da9d19d51 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -1730,7 +1730,7 @@ bool btrfs_readdir_get_delayed_items(struct inode *inode, return true; } -void btrfs_readdir_put_delayed_items(struct inode *inode, +void btrfs_readdir_put_delayed_items(struct btrfs_inode *inode, struct list_head *ins_list, struct list_head *del_list) { @@ -1752,7 +1752,7 @@ void btrfs_readdir_put_delayed_items(struct inode *inode, * The VFS is going to do up_read(), so we need to downgrade back to a * read lock. */ - downgrade_write(&inode->i_rwsem); + downgrade_write(&inode->vfs_inode.i_rwsem); } int btrfs_should_delete_dir_index(const struct list_head *del_list, diff --git a/fs/btrfs/delayed-inode.h b/fs/btrfs/delayed-inode.h index 654c04d38fb3a5eef30188bf62bc8f2cb8fc4a72..e30ba7962d448c45ef6c9475237e72ab4f3d7c08 100644 --- a/fs/btrfs/delayed-inode.h +++ b/fs/btrfs/delayed-inode.h @@ -147,7 +147,7 @@ bool btrfs_readdir_get_delayed_items(struct inode *inode, u64 last_index, struct list_head *ins_list, struct list_head *del_list); -void btrfs_readdir_put_delayed_items(struct inode *inode, +void btrfs_readdir_put_delayed_items(struct btrfs_inode *inode, struct list_head *ins_list, struct list_head *del_list); int btrfs_should_delete_dir_index(const struct list_head *del_list, diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 89f832174d4e21fe87478298cf8f2b1432f75bee..85e29f626a4bcf45e6291e9e1e3cd77415cbdd4a 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -6037,7 +6037,7 @@ static int btrfs_real_readdir(struct file *file, struct dir_context *ctx) ret = 0; err: if (put) - btrfs_readdir_put_delayed_items(inode, &ins_list, &del_list); + btrfs_readdir_put_delayed_items(BTRFS_I(inode), &ins_list, &del_list); btrfs_free_path(path); return ret; }