提交 5b7544cb 编写于 作者: D David Sterba

btrfs: pass btrfs_inode to btrfs_unlink_subvol

The function is for internal interfaces so we should use the
btrfs_inode.
Reviewed-by: NAnand Jain <anand.jain@oracle.com>
Signed-off-by: NDavid Sterba <dsterba@suse.com>
上级 bd54766e
...@@ -4470,9 +4470,9 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry) ...@@ -4470,9 +4470,9 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry)
} }
static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
struct inode *dir, struct dentry *dentry) struct btrfs_inode *dir, struct dentry *dentry)
{ {
struct btrfs_root *root = BTRFS_I(dir)->root; struct btrfs_root *root = dir->root;
struct btrfs_inode *inode = BTRFS_I(d_inode(dentry)); struct btrfs_inode *inode = BTRFS_I(d_inode(dentry));
struct btrfs_path *path; struct btrfs_path *path;
struct extent_buffer *leaf; struct extent_buffer *leaf;
...@@ -4481,10 +4481,10 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, ...@@ -4481,10 +4481,10 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
u64 index; u64 index;
int ret; int ret;
u64 objectid; u64 objectid;
u64 dir_ino = btrfs_ino(BTRFS_I(dir)); u64 dir_ino = btrfs_ino(dir);
struct fscrypt_name fname; struct fscrypt_name fname;
ret = fscrypt_setup_filename(dir, &dentry->d_name, 1, &fname); ret = fscrypt_setup_filename(&dir->vfs_inode, &dentry->d_name, 1, &fname);
if (ret) if (ret)
return ret; return ret;
...@@ -4557,17 +4557,17 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, ...@@ -4557,17 +4557,17 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
} }
} }
ret = btrfs_delete_delayed_dir_index(trans, BTRFS_I(dir), index); ret = btrfs_delete_delayed_dir_index(trans, dir, index);
if (ret) { if (ret) {
btrfs_abort_transaction(trans, ret); btrfs_abort_transaction(trans, ret);
goto out; goto out;
} }
btrfs_i_size_write(BTRFS_I(dir), dir->i_size - fname.disk_name.len * 2); btrfs_i_size_write(dir, dir->vfs_inode.i_size - fname.disk_name.len * 2);
inode_inc_iversion(dir); inode_inc_iversion(&dir->vfs_inode);
dir->i_mtime = current_time(dir); dir->vfs_inode.i_mtime = current_time(&dir->vfs_inode);
dir->i_ctime = dir->i_mtime; dir->vfs_inode.i_ctime = dir->vfs_inode.i_mtime;
ret = btrfs_update_inode_fallback(trans, root, BTRFS_I(dir)); ret = btrfs_update_inode_fallback(trans, root, dir);
if (ret) if (ret)
btrfs_abort_transaction(trans, ret); btrfs_abort_transaction(trans, ret);
out: out:
...@@ -4758,7 +4758,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry) ...@@ -4758,7 +4758,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
btrfs_record_snapshot_destroy(trans, dir); btrfs_record_snapshot_destroy(trans, dir);
ret = btrfs_unlink_subvol(trans, &dir->vfs_inode, dentry); ret = btrfs_unlink_subvol(trans, dir, dentry);
if (ret) { if (ret) {
btrfs_abort_transaction(trans, ret); btrfs_abort_transaction(trans, ret);
goto out_end_trans; goto out_end_trans;
...@@ -4862,7 +4862,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) ...@@ -4862,7 +4862,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry)
} }
if (unlikely(btrfs_ino(BTRFS_I(inode)) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { if (unlikely(btrfs_ino(BTRFS_I(inode)) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) {
err = btrfs_unlink_subvol(trans, dir, dentry); err = btrfs_unlink_subvol(trans, BTRFS_I(dir), dentry);
goto out; goto out;
} }
...@@ -9208,7 +9208,7 @@ static int btrfs_rename_exchange(struct inode *old_dir, ...@@ -9208,7 +9208,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
/* src is a subvolume */ /* src is a subvolume */
if (old_ino == BTRFS_FIRST_FREE_OBJECTID) { if (old_ino == BTRFS_FIRST_FREE_OBJECTID) {
ret = btrfs_unlink_subvol(trans, old_dir, old_dentry); ret = btrfs_unlink_subvol(trans, BTRFS_I(old_dir), old_dentry);
} else { /* src is an inode */ } else { /* src is an inode */
ret = __btrfs_unlink_inode(trans, BTRFS_I(old_dir), ret = __btrfs_unlink_inode(trans, BTRFS_I(old_dir),
BTRFS_I(old_dentry->d_inode), BTRFS_I(old_dentry->d_inode),
...@@ -9223,7 +9223,7 @@ static int btrfs_rename_exchange(struct inode *old_dir, ...@@ -9223,7 +9223,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
/* dest is a subvolume */ /* dest is a subvolume */
if (new_ino == BTRFS_FIRST_FREE_OBJECTID) { if (new_ino == BTRFS_FIRST_FREE_OBJECTID) {
ret = btrfs_unlink_subvol(trans, new_dir, new_dentry); ret = btrfs_unlink_subvol(trans, BTRFS_I(new_dir), new_dentry);
} else { /* dest is an inode */ } else { /* dest is an inode */
ret = __btrfs_unlink_inode(trans, BTRFS_I(new_dir), ret = __btrfs_unlink_inode(trans, BTRFS_I(new_dir),
BTRFS_I(new_dentry->d_inode), BTRFS_I(new_dentry->d_inode),
...@@ -9470,7 +9470,7 @@ static int btrfs_rename(struct user_namespace *mnt_userns, ...@@ -9470,7 +9470,7 @@ static int btrfs_rename(struct user_namespace *mnt_userns,
BTRFS_I(old_inode), 1); BTRFS_I(old_inode), 1);
if (unlikely(old_ino == BTRFS_FIRST_FREE_OBJECTID)) { if (unlikely(old_ino == BTRFS_FIRST_FREE_OBJECTID)) {
ret = btrfs_unlink_subvol(trans, old_dir, old_dentry); ret = btrfs_unlink_subvol(trans, BTRFS_I(old_dir), old_dentry);
} else { } else {
ret = __btrfs_unlink_inode(trans, BTRFS_I(old_dir), ret = __btrfs_unlink_inode(trans, BTRFS_I(old_dir),
BTRFS_I(d_inode(old_dentry)), BTRFS_I(d_inode(old_dentry)),
...@@ -9488,7 +9488,7 @@ static int btrfs_rename(struct user_namespace *mnt_userns, ...@@ -9488,7 +9488,7 @@ static int btrfs_rename(struct user_namespace *mnt_userns,
new_inode->i_ctime = current_time(new_inode); new_inode->i_ctime = current_time(new_inode);
if (unlikely(btrfs_ino(BTRFS_I(new_inode)) == if (unlikely(btrfs_ino(BTRFS_I(new_inode)) ==
BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) {
ret = btrfs_unlink_subvol(trans, new_dir, new_dentry); ret = btrfs_unlink_subvol(trans, BTRFS_I(new_dir), new_dentry);
BUG_ON(new_inode->i_nlink == 0); BUG_ON(new_inode->i_nlink == 0);
} else { } else {
ret = btrfs_unlink_inode(trans, BTRFS_I(new_dir), ret = btrfs_unlink_inode(trans, BTRFS_I(new_dir),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册