mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-03 01:36:52 +09:00
btrfs: don't pass parent objectid to btrfs_new_inode() explicitly
For everything other than a subvolume root inode, we get the parent objectid from the parent directory. For the subvolume root inode, the parent objectid is the same as the inode's objectid. We can find this within btrfs_new_inode() instead of passing it. Reviewed-by: Sweet Tea Dorminy <sweettea-kernel@dorminy.me> Signed-off-by: Omar Sandoval <osandov@fb.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
committed by
David Sterba
parent
70dc55f428
commit
23c24ef8e4
@@ -6090,8 +6090,7 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans,
|
||||
struct user_namespace *mnt_userns,
|
||||
struct inode *dir,
|
||||
const char *name, int name_len,
|
||||
u64 ref_objectid, u64 objectid,
|
||||
umode_t mode, u64 *index)
|
||||
u64 objectid, umode_t mode, u64 *index)
|
||||
{
|
||||
struct btrfs_fs_info *fs_info = root->fs_info;
|
||||
struct inode *inode;
|
||||
@@ -6177,7 +6176,10 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans,
|
||||
*/
|
||||
key[1].objectid = objectid;
|
||||
key[1].type = BTRFS_INODE_REF_KEY;
|
||||
key[1].offset = ref_objectid;
|
||||
if (dir)
|
||||
key[1].offset = btrfs_ino(BTRFS_I(dir));
|
||||
else
|
||||
key[1].offset = objectid;
|
||||
|
||||
sizes[1] = name_len + sizeof(*ref);
|
||||
}
|
||||
@@ -6375,7 +6377,7 @@ static int btrfs_mknod(struct user_namespace *mnt_userns, struct inode *dir,
|
||||
|
||||
inode = btrfs_new_inode(trans, root, mnt_userns, dir,
|
||||
dentry->d_name.name, dentry->d_name.len,
|
||||
btrfs_ino(BTRFS_I(dir)), objectid, mode, &index);
|
||||
objectid, mode, &index);
|
||||
if (IS_ERR(inode)) {
|
||||
err = PTR_ERR(inode);
|
||||
inode = NULL;
|
||||
@@ -6439,7 +6441,7 @@ static int btrfs_create(struct user_namespace *mnt_userns, struct inode *dir,
|
||||
|
||||
inode = btrfs_new_inode(trans, root, mnt_userns, dir,
|
||||
dentry->d_name.name, dentry->d_name.len,
|
||||
btrfs_ino(BTRFS_I(dir)), objectid, mode, &index);
|
||||
objectid, mode, &index);
|
||||
if (IS_ERR(inode)) {
|
||||
err = PTR_ERR(inode);
|
||||
inode = NULL;
|
||||
@@ -6584,7 +6586,7 @@ static int btrfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
|
||||
|
||||
inode = btrfs_new_inode(trans, root, mnt_userns, dir,
|
||||
dentry->d_name.name, dentry->d_name.len,
|
||||
btrfs_ino(BTRFS_I(dir)), objectid,
|
||||
objectid,
|
||||
S_IFDIR | mode, &index);
|
||||
if (IS_ERR(inode)) {
|
||||
err = PTR_ERR(inode);
|
||||
@@ -8769,7 +8771,7 @@ int btrfs_create_subvol_root(struct btrfs_trans_handle *trans,
|
||||
return err;
|
||||
|
||||
inode = btrfs_new_inode(trans, new_root, mnt_userns, NULL, "..", 2,
|
||||
ino, ino,
|
||||
ino,
|
||||
S_IFDIR | (~current_umask() & S_IRWXUGO),
|
||||
&index);
|
||||
if (IS_ERR(inode))
|
||||
@@ -9282,7 +9284,6 @@ static int btrfs_whiteout_for_rename(struct btrfs_trans_handle *trans,
|
||||
inode = btrfs_new_inode(trans, root, mnt_userns, dir,
|
||||
dentry->d_name.name,
|
||||
dentry->d_name.len,
|
||||
btrfs_ino(BTRFS_I(dir)),
|
||||
objectid,
|
||||
S_IFCHR | WHITEOUT_MODE,
|
||||
&index);
|
||||
@@ -9776,7 +9777,7 @@ static int btrfs_symlink(struct user_namespace *mnt_userns, struct inode *dir,
|
||||
|
||||
inode = btrfs_new_inode(trans, root, mnt_userns, dir,
|
||||
dentry->d_name.name, dentry->d_name.len,
|
||||
btrfs_ino(BTRFS_I(dir)), objectid,
|
||||
objectid,
|
||||
S_IFLNK | S_IRWXUGO, &index);
|
||||
if (IS_ERR(inode)) {
|
||||
err = PTR_ERR(inode);
|
||||
@@ -10122,7 +10123,7 @@ static int btrfs_tmpfile(struct user_namespace *mnt_userns, struct inode *dir,
|
||||
goto out;
|
||||
|
||||
inode = btrfs_new_inode(trans, root, mnt_userns, dir, NULL, 0,
|
||||
btrfs_ino(BTRFS_I(dir)), objectid, mode, &index);
|
||||
objectid, mode, &index);
|
||||
if (IS_ERR(inode)) {
|
||||
ret = PTR_ERR(inode);
|
||||
inode = NULL;
|
||||
|
||||
Reference in New Issue
Block a user