diff options
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/export.c | 6 | ||||
-rw-r--r-- | fs/btrfs/file.c | 2 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 36 | ||||
-rw-r--r-- | fs/btrfs/ioctl.c | 22 | ||||
-rw-r--r-- | fs/btrfs/super.c | 8 | ||||
-rw-r--r-- | fs/btrfs/tree-log.c | 14 | ||||
-rw-r--r-- | fs/btrfs/xattr.c | 16 |
7 files changed, 52 insertions, 52 deletions
diff --git a/fs/btrfs/export.c b/fs/btrfs/export.c index 37d164540c3a..8d052209f473 100644 --- a/fs/btrfs/export.c +++ b/fs/btrfs/export.c | |||
@@ -152,7 +152,7 @@ static struct dentry *btrfs_fh_to_dentry(struct super_block *sb, struct fid *fh, | |||
152 | 152 | ||
153 | static struct dentry *btrfs_get_parent(struct dentry *child) | 153 | static struct dentry *btrfs_get_parent(struct dentry *child) |
154 | { | 154 | { |
155 | struct inode *dir = child->d_inode; | 155 | struct inode *dir = d_inode(child); |
156 | struct btrfs_root *root = BTRFS_I(dir)->root; | 156 | struct btrfs_root *root = BTRFS_I(dir)->root; |
157 | struct btrfs_path *path; | 157 | struct btrfs_path *path; |
158 | struct extent_buffer *leaf; | 158 | struct extent_buffer *leaf; |
@@ -220,8 +220,8 @@ fail: | |||
220 | static int btrfs_get_name(struct dentry *parent, char *name, | 220 | static int btrfs_get_name(struct dentry *parent, char *name, |
221 | struct dentry *child) | 221 | struct dentry *child) |
222 | { | 222 | { |
223 | struct inode *inode = child->d_inode; | 223 | struct inode *inode = d_inode(child); |
224 | struct inode *dir = parent->d_inode; | 224 | struct inode *dir = d_inode(parent); |
225 | struct btrfs_path *path; | 225 | struct btrfs_path *path; |
226 | struct btrfs_root *root = BTRFS_I(dir)->root; | 226 | struct btrfs_root *root = BTRFS_I(dir)->root; |
227 | struct btrfs_inode_ref *iref; | 227 | struct btrfs_inode_ref *iref; |
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 467620a3b1f9..b072e17479aa 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -1862,7 +1862,7 @@ static int start_ordered_ops(struct inode *inode, loff_t start, loff_t end) | |||
1862 | int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) | 1862 | int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) |
1863 | { | 1863 | { |
1864 | struct dentry *dentry = file->f_path.dentry; | 1864 | struct dentry *dentry = file->f_path.dentry; |
1865 | struct inode *inode = dentry->d_inode; | 1865 | struct inode *inode = d_inode(dentry); |
1866 | struct btrfs_root *root = BTRFS_I(inode)->root; | 1866 | struct btrfs_root *root = BTRFS_I(inode)->root; |
1867 | struct btrfs_trans_handle *trans; | 1867 | struct btrfs_trans_handle *trans; |
1868 | struct btrfs_log_ctx ctx; | 1868 | struct btrfs_log_ctx ctx; |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 56f00a25c003..ada4d24ed11b 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -4020,16 +4020,16 @@ static int btrfs_unlink(struct inode *dir, struct dentry *dentry) | |||
4020 | { | 4020 | { |
4021 | struct btrfs_root *root = BTRFS_I(dir)->root; | 4021 | struct btrfs_root *root = BTRFS_I(dir)->root; |
4022 | struct btrfs_trans_handle *trans; | 4022 | struct btrfs_trans_handle *trans; |
4023 | struct inode *inode = dentry->d_inode; | 4023 | struct inode *inode = d_inode(dentry); |
4024 | int ret; | 4024 | int ret; |
4025 | 4025 | ||
4026 | trans = __unlink_start_trans(dir); | 4026 | trans = __unlink_start_trans(dir); |
4027 | if (IS_ERR(trans)) | 4027 | if (IS_ERR(trans)) |
4028 | return PTR_ERR(trans); | 4028 | return PTR_ERR(trans); |
4029 | 4029 | ||
4030 | btrfs_record_unlink_dir(trans, dir, dentry->d_inode, 0); | 4030 | btrfs_record_unlink_dir(trans, dir, d_inode(dentry), 0); |
4031 | 4031 | ||
4032 | ret = btrfs_unlink_inode(trans, root, dir, dentry->d_inode, | 4032 | ret = btrfs_unlink_inode(trans, root, dir, d_inode(dentry), |
4033 | dentry->d_name.name, dentry->d_name.len); | 4033 | dentry->d_name.name, dentry->d_name.len); |
4034 | if (ret) | 4034 | if (ret) |
4035 | goto out; | 4035 | goto out; |
@@ -4128,7 +4128,7 @@ out: | |||
4128 | 4128 | ||
4129 | static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) | 4129 | static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) |
4130 | { | 4130 | { |
4131 | struct inode *inode = dentry->d_inode; | 4131 | struct inode *inode = d_inode(dentry); |
4132 | int err = 0; | 4132 | int err = 0; |
4133 | struct btrfs_root *root = BTRFS_I(dir)->root; | 4133 | struct btrfs_root *root = BTRFS_I(dir)->root; |
4134 | struct btrfs_trans_handle *trans; | 4134 | struct btrfs_trans_handle *trans; |
@@ -4155,7 +4155,7 @@ static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) | |||
4155 | goto out; | 4155 | goto out; |
4156 | 4156 | ||
4157 | /* now the directory is empty */ | 4157 | /* now the directory is empty */ |
4158 | err = btrfs_unlink_inode(trans, root, dir, dentry->d_inode, | 4158 | err = btrfs_unlink_inode(trans, root, dir, d_inode(dentry), |
4159 | dentry->d_name.name, dentry->d_name.len); | 4159 | dentry->d_name.name, dentry->d_name.len); |
4160 | if (!err) | 4160 | if (!err) |
4161 | btrfs_i_size_write(inode, 0); | 4161 | btrfs_i_size_write(inode, 0); |
@@ -4915,7 +4915,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr) | |||
4915 | 4915 | ||
4916 | static int btrfs_setattr(struct dentry *dentry, struct iattr *attr) | 4916 | static int btrfs_setattr(struct dentry *dentry, struct iattr *attr) |
4917 | { | 4917 | { |
4918 | struct inode *inode = dentry->d_inode; | 4918 | struct inode *inode = d_inode(dentry); |
4919 | struct btrfs_root *root = BTRFS_I(inode)->root; | 4919 | struct btrfs_root *root = BTRFS_I(inode)->root; |
4920 | int err; | 4920 | int err; |
4921 | 4921 | ||
@@ -5547,10 +5547,10 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry) | |||
5547 | static int btrfs_dentry_delete(const struct dentry *dentry) | 5547 | static int btrfs_dentry_delete(const struct dentry *dentry) |
5548 | { | 5548 | { |
5549 | struct btrfs_root *root; | 5549 | struct btrfs_root *root; |
5550 | struct inode *inode = dentry->d_inode; | 5550 | struct inode *inode = d_inode(dentry); |
5551 | 5551 | ||
5552 | if (!inode && !IS_ROOT(dentry)) | 5552 | if (!inode && !IS_ROOT(dentry)) |
5553 | inode = dentry->d_parent->d_inode; | 5553 | inode = d_inode(dentry->d_parent); |
5554 | 5554 | ||
5555 | if (inode) { | 5555 | if (inode) { |
5556 | root = BTRFS_I(inode)->root; | 5556 | root = BTRFS_I(inode)->root; |
@@ -6357,7 +6357,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir, | |||
6357 | { | 6357 | { |
6358 | struct btrfs_trans_handle *trans; | 6358 | struct btrfs_trans_handle *trans; |
6359 | struct btrfs_root *root = BTRFS_I(dir)->root; | 6359 | struct btrfs_root *root = BTRFS_I(dir)->root; |
6360 | struct inode *inode = old_dentry->d_inode; | 6360 | struct inode *inode = d_inode(old_dentry); |
6361 | u64 index; | 6361 | u64 index; |
6362 | int err; | 6362 | int err; |
6363 | int drop_inode = 0; | 6363 | int drop_inode = 0; |
@@ -8260,7 +8260,7 @@ static ssize_t btrfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, | |||
8260 | if (check_direct_IO(BTRFS_I(inode)->root, iocb, iter, offset)) | 8260 | if (check_direct_IO(BTRFS_I(inode)->root, iocb, iter, offset)) |
8261 | return 0; | 8261 | return 0; |
8262 | 8262 | ||
8263 | atomic_inc(&inode->i_dio_count); | 8263 | inode_dio_begin(inode); |
8264 | smp_mb__after_atomic(); | 8264 | smp_mb__after_atomic(); |
8265 | 8265 | ||
8266 | /* | 8266 | /* |
@@ -8300,7 +8300,7 @@ static ssize_t btrfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, | |||
8300 | current->journal_info = &outstanding_extents; | 8300 | current->journal_info = &outstanding_extents; |
8301 | } else if (test_bit(BTRFS_INODE_READDIO_NEED_LOCK, | 8301 | } else if (test_bit(BTRFS_INODE_READDIO_NEED_LOCK, |
8302 | &BTRFS_I(inode)->runtime_flags)) { | 8302 | &BTRFS_I(inode)->runtime_flags)) { |
8303 | inode_dio_done(inode); | 8303 | inode_dio_end(inode); |
8304 | flags = DIO_LOCKING | DIO_SKIP_HOLES; | 8304 | flags = DIO_LOCKING | DIO_SKIP_HOLES; |
8305 | wakeup = false; | 8305 | wakeup = false; |
8306 | } | 8306 | } |
@@ -8319,7 +8319,7 @@ static ssize_t btrfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, | |||
8319 | } | 8319 | } |
8320 | out: | 8320 | out: |
8321 | if (wakeup) | 8321 | if (wakeup) |
8322 | inode_dio_done(inode); | 8322 | inode_dio_end(inode); |
8323 | if (relock) | 8323 | if (relock) |
8324 | mutex_lock(&inode->i_mutex); | 8324 | mutex_lock(&inode->i_mutex); |
8325 | 8325 | ||
@@ -9006,7 +9006,7 @@ static int btrfs_getattr(struct vfsmount *mnt, | |||
9006 | struct dentry *dentry, struct kstat *stat) | 9006 | struct dentry *dentry, struct kstat *stat) |
9007 | { | 9007 | { |
9008 | u64 delalloc_bytes; | 9008 | u64 delalloc_bytes; |
9009 | struct inode *inode = dentry->d_inode; | 9009 | struct inode *inode = d_inode(dentry); |
9010 | u32 blocksize = inode->i_sb->s_blocksize; | 9010 | u32 blocksize = inode->i_sb->s_blocksize; |
9011 | 9011 | ||
9012 | generic_fillattr(inode, stat); | 9012 | generic_fillattr(inode, stat); |
@@ -9027,8 +9027,8 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
9027 | struct btrfs_trans_handle *trans; | 9027 | struct btrfs_trans_handle *trans; |
9028 | struct btrfs_root *root = BTRFS_I(old_dir)->root; | 9028 | struct btrfs_root *root = BTRFS_I(old_dir)->root; |
9029 | struct btrfs_root *dest = BTRFS_I(new_dir)->root; | 9029 | struct btrfs_root *dest = BTRFS_I(new_dir)->root; |
9030 | struct inode *new_inode = new_dentry->d_inode; | 9030 | struct inode *new_inode = d_inode(new_dentry); |
9031 | struct inode *old_inode = old_dentry->d_inode; | 9031 | struct inode *old_inode = d_inode(old_dentry); |
9032 | struct timespec ctime = CURRENT_TIME; | 9032 | struct timespec ctime = CURRENT_TIME; |
9033 | u64 index = 0; | 9033 | u64 index = 0; |
9034 | u64 root_objectid; | 9034 | u64 root_objectid; |
@@ -9140,7 +9140,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
9140 | old_dentry->d_name.len); | 9140 | old_dentry->d_name.len); |
9141 | } else { | 9141 | } else { |
9142 | ret = __btrfs_unlink_inode(trans, root, old_dir, | 9142 | ret = __btrfs_unlink_inode(trans, root, old_dir, |
9143 | old_dentry->d_inode, | 9143 | d_inode(old_dentry), |
9144 | old_dentry->d_name.name, | 9144 | old_dentry->d_name.name, |
9145 | old_dentry->d_name.len); | 9145 | old_dentry->d_name.len); |
9146 | if (!ret) | 9146 | if (!ret) |
@@ -9164,12 +9164,12 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
9164 | BUG_ON(new_inode->i_nlink == 0); | 9164 | BUG_ON(new_inode->i_nlink == 0); |
9165 | } else { | 9165 | } else { |
9166 | ret = btrfs_unlink_inode(trans, dest, new_dir, | 9166 | ret = btrfs_unlink_inode(trans, dest, new_dir, |
9167 | new_dentry->d_inode, | 9167 | d_inode(new_dentry), |
9168 | new_dentry->d_name.name, | 9168 | new_dentry->d_name.name, |
9169 | new_dentry->d_name.len); | 9169 | new_dentry->d_name.len); |
9170 | } | 9170 | } |
9171 | if (!ret && new_inode->i_nlink == 0) | 9171 | if (!ret && new_inode->i_nlink == 0) |
9172 | ret = btrfs_orphan_add(trans, new_dentry->d_inode); | 9172 | ret = btrfs_orphan_add(trans, d_inode(new_dentry)); |
9173 | if (ret) { | 9173 | if (ret) { |
9174 | btrfs_abort_transaction(trans, root, ret); | 9174 | btrfs_abort_transaction(trans, root, ret); |
9175 | goto out_fail; | 9175 | goto out_fail; |
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index ca5d968f4c37..b05653f182c2 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -724,7 +724,7 @@ static int create_snapshot(struct btrfs_root *root, struct inode *dir, | |||
724 | if (ret) | 724 | if (ret) |
725 | goto fail; | 725 | goto fail; |
726 | 726 | ||
727 | inode = btrfs_lookup_dentry(dentry->d_parent->d_inode, dentry); | 727 | inode = btrfs_lookup_dentry(d_inode(dentry->d_parent), dentry); |
728 | if (IS_ERR(inode)) { | 728 | if (IS_ERR(inode)) { |
729 | ret = PTR_ERR(inode); | 729 | ret = PTR_ERR(inode); |
730 | goto fail; | 730 | goto fail; |
@@ -768,10 +768,10 @@ static int btrfs_may_delete(struct inode *dir, struct dentry *victim, int isdir) | |||
768 | { | 768 | { |
769 | int error; | 769 | int error; |
770 | 770 | ||
771 | if (!victim->d_inode) | 771 | if (d_really_is_negative(victim)) |
772 | return -ENOENT; | 772 | return -ENOENT; |
773 | 773 | ||
774 | BUG_ON(victim->d_parent->d_inode != dir); | 774 | BUG_ON(d_inode(victim->d_parent) != dir); |
775 | audit_inode_child(dir, victim, AUDIT_TYPE_CHILD_DELETE); | 775 | audit_inode_child(dir, victim, AUDIT_TYPE_CHILD_DELETE); |
776 | 776 | ||
777 | error = inode_permission(dir, MAY_WRITE | MAY_EXEC); | 777 | error = inode_permission(dir, MAY_WRITE | MAY_EXEC); |
@@ -779,8 +779,8 @@ static int btrfs_may_delete(struct inode *dir, struct dentry *victim, int isdir) | |||
779 | return error; | 779 | return error; |
780 | if (IS_APPEND(dir)) | 780 | if (IS_APPEND(dir)) |
781 | return -EPERM; | 781 | return -EPERM; |
782 | if (check_sticky(dir, victim->d_inode) || IS_APPEND(victim->d_inode) || | 782 | if (check_sticky(dir, d_inode(victim)) || IS_APPEND(d_inode(victim)) || |
783 | IS_IMMUTABLE(victim->d_inode) || IS_SWAPFILE(victim->d_inode)) | 783 | IS_IMMUTABLE(d_inode(victim)) || IS_SWAPFILE(d_inode(victim))) |
784 | return -EPERM; | 784 | return -EPERM; |
785 | if (isdir) { | 785 | if (isdir) { |
786 | if (!d_is_dir(victim)) | 786 | if (!d_is_dir(victim)) |
@@ -799,7 +799,7 @@ static int btrfs_may_delete(struct inode *dir, struct dentry *victim, int isdir) | |||
799 | /* copy of may_create in fs/namei.c() */ | 799 | /* copy of may_create in fs/namei.c() */ |
800 | static inline int btrfs_may_create(struct inode *dir, struct dentry *child) | 800 | static inline int btrfs_may_create(struct inode *dir, struct dentry *child) |
801 | { | 801 | { |
802 | if (child->d_inode) | 802 | if (d_really_is_positive(child)) |
803 | return -EEXIST; | 803 | return -EEXIST; |
804 | if (IS_DEADDIR(dir)) | 804 | if (IS_DEADDIR(dir)) |
805 | return -ENOENT; | 805 | return -ENOENT; |
@@ -817,7 +817,7 @@ static noinline int btrfs_mksubvol(struct path *parent, | |||
817 | u64 *async_transid, bool readonly, | 817 | u64 *async_transid, bool readonly, |
818 | struct btrfs_qgroup_inherit *inherit) | 818 | struct btrfs_qgroup_inherit *inherit) |
819 | { | 819 | { |
820 | struct inode *dir = parent->dentry->d_inode; | 820 | struct inode *dir = d_inode(parent->dentry); |
821 | struct dentry *dentry; | 821 | struct dentry *dentry; |
822 | int error; | 822 | int error; |
823 | 823 | ||
@@ -831,7 +831,7 @@ static noinline int btrfs_mksubvol(struct path *parent, | |||
831 | goto out_unlock; | 831 | goto out_unlock; |
832 | 832 | ||
833 | error = -EEXIST; | 833 | error = -EEXIST; |
834 | if (dentry->d_inode) | 834 | if (d_really_is_positive(dentry)) |
835 | goto out_dput; | 835 | goto out_dput; |
836 | 836 | ||
837 | error = btrfs_may_create(dir, dentry); | 837 | error = btrfs_may_create(dir, dentry); |
@@ -2301,7 +2301,7 @@ static noinline int btrfs_ioctl_snap_destroy(struct file *file, | |||
2301 | { | 2301 | { |
2302 | struct dentry *parent = file->f_path.dentry; | 2302 | struct dentry *parent = file->f_path.dentry; |
2303 | struct dentry *dentry; | 2303 | struct dentry *dentry; |
2304 | struct inode *dir = parent->d_inode; | 2304 | struct inode *dir = d_inode(parent); |
2305 | struct inode *inode; | 2305 | struct inode *inode; |
2306 | struct btrfs_root *root = BTRFS_I(dir)->root; | 2306 | struct btrfs_root *root = BTRFS_I(dir)->root; |
2307 | struct btrfs_root *dest = NULL; | 2307 | struct btrfs_root *dest = NULL; |
@@ -2340,12 +2340,12 @@ static noinline int btrfs_ioctl_snap_destroy(struct file *file, | |||
2340 | goto out_unlock_dir; | 2340 | goto out_unlock_dir; |
2341 | } | 2341 | } |
2342 | 2342 | ||
2343 | if (!dentry->d_inode) { | 2343 | if (d_really_is_negative(dentry)) { |
2344 | err = -ENOENT; | 2344 | err = -ENOENT; |
2345 | goto out_dput; | 2345 | goto out_dput; |
2346 | } | 2346 | } |
2347 | 2347 | ||
2348 | inode = dentry->d_inode; | 2348 | inode = d_inode(dentry); |
2349 | dest = BTRFS_I(inode)->root; | 2349 | dest = BTRFS_I(inode)->root; |
2350 | if (!capable(CAP_SYS_ADMIN)) { | 2350 | if (!capable(CAP_SYS_ADMIN)) { |
2351 | /* | 2351 | /* |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index f2c9f9db3b19..9e66f5e724db 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -925,7 +925,7 @@ setup_root: | |||
925 | * a reference to the dentry. We will have already gotten a reference | 925 | * a reference to the dentry. We will have already gotten a reference |
926 | * to the inode in btrfs_fill_super so we're good to go. | 926 | * to the inode in btrfs_fill_super so we're good to go. |
927 | */ | 927 | */ |
928 | if (!new && sb->s_root->d_inode == inode) { | 928 | if (!new && d_inode(sb->s_root) == inode) { |
929 | iput(inode); | 929 | iput(inode); |
930 | return dget(sb->s_root); | 930 | return dget(sb->s_root); |
931 | } | 931 | } |
@@ -1230,7 +1230,7 @@ static struct dentry *mount_subvol(const char *subvol_name, int flags, | |||
1230 | 1230 | ||
1231 | root = mount_subtree(mnt, subvol_name); | 1231 | root = mount_subtree(mnt, subvol_name); |
1232 | 1232 | ||
1233 | if (!IS_ERR(root) && !is_subvolume_inode(root->d_inode)) { | 1233 | if (!IS_ERR(root) && !is_subvolume_inode(d_inode(root))) { |
1234 | struct super_block *s = root->d_sb; | 1234 | struct super_block *s = root->d_sb; |
1235 | dput(root); | 1235 | dput(root); |
1236 | root = ERR_PTR(-EINVAL); | 1236 | root = ERR_PTR(-EINVAL); |
@@ -1895,8 +1895,8 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf) | |||
1895 | buf->f_fsid.val[0] = be32_to_cpu(fsid[0]) ^ be32_to_cpu(fsid[2]); | 1895 | buf->f_fsid.val[0] = be32_to_cpu(fsid[0]) ^ be32_to_cpu(fsid[2]); |
1896 | buf->f_fsid.val[1] = be32_to_cpu(fsid[1]) ^ be32_to_cpu(fsid[3]); | 1896 | buf->f_fsid.val[1] = be32_to_cpu(fsid[1]) ^ be32_to_cpu(fsid[3]); |
1897 | /* Mask in the root object ID too, to disambiguate subvols */ | 1897 | /* Mask in the root object ID too, to disambiguate subvols */ |
1898 | buf->f_fsid.val[0] ^= BTRFS_I(dentry->d_inode)->root->objectid >> 32; | 1898 | buf->f_fsid.val[0] ^= BTRFS_I(d_inode(dentry))->root->objectid >> 32; |
1899 | buf->f_fsid.val[1] ^= BTRFS_I(dentry->d_inode)->root->objectid; | 1899 | buf->f_fsid.val[1] ^= BTRFS_I(d_inode(dentry))->root->objectid; |
1900 | 1900 | ||
1901 | return 0; | 1901 | return 0; |
1902 | } | 1902 | } |
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index a089b5944efc..d04968374e9d 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c | |||
@@ -4474,9 +4474,9 @@ static noinline int check_parent_dirs_for_sync(struct btrfs_trans_handle *trans, | |||
4474 | goto out; | 4474 | goto out; |
4475 | 4475 | ||
4476 | if (!S_ISDIR(inode->i_mode)) { | 4476 | if (!S_ISDIR(inode->i_mode)) { |
4477 | if (!parent || !parent->d_inode || sb != parent->d_inode->i_sb) | 4477 | if (!parent || d_really_is_negative(parent) || sb != d_inode(parent)->i_sb) |
4478 | goto out; | 4478 | goto out; |
4479 | inode = parent->d_inode; | 4479 | inode = d_inode(parent); |
4480 | } | 4480 | } |
4481 | 4481 | ||
4482 | while (1) { | 4482 | while (1) { |
@@ -4502,7 +4502,7 @@ static noinline int check_parent_dirs_for_sync(struct btrfs_trans_handle *trans, | |||
4502 | break; | 4502 | break; |
4503 | } | 4503 | } |
4504 | 4504 | ||
4505 | if (!parent || !parent->d_inode || sb != parent->d_inode->i_sb) | 4505 | if (!parent || d_really_is_negative(parent) || sb != d_inode(parent)->i_sb) |
4506 | break; | 4506 | break; |
4507 | 4507 | ||
4508 | if (IS_ROOT(parent)) | 4508 | if (IS_ROOT(parent)) |
@@ -4511,7 +4511,7 @@ static noinline int check_parent_dirs_for_sync(struct btrfs_trans_handle *trans, | |||
4511 | parent = dget_parent(parent); | 4511 | parent = dget_parent(parent); |
4512 | dput(old_parent); | 4512 | dput(old_parent); |
4513 | old_parent = parent; | 4513 | old_parent = parent; |
4514 | inode = parent->d_inode; | 4514 | inode = d_inode(parent); |
4515 | 4515 | ||
4516 | } | 4516 | } |
4517 | dput(old_parent); | 4517 | dput(old_parent); |
@@ -4777,10 +4777,10 @@ static int btrfs_log_inode_parent(struct btrfs_trans_handle *trans, | |||
4777 | log_dentries = true; | 4777 | log_dentries = true; |
4778 | 4778 | ||
4779 | while (1) { | 4779 | while (1) { |
4780 | if (!parent || !parent->d_inode || sb != parent->d_inode->i_sb) | 4780 | if (!parent || d_really_is_negative(parent) || sb != d_inode(parent)->i_sb) |
4781 | break; | 4781 | break; |
4782 | 4782 | ||
4783 | inode = parent->d_inode; | 4783 | inode = d_inode(parent); |
4784 | if (root != BTRFS_I(inode)->root) | 4784 | if (root != BTRFS_I(inode)->root) |
4785 | break; | 4785 | break; |
4786 | 4786 | ||
@@ -4845,7 +4845,7 @@ int btrfs_log_dentry_safe(struct btrfs_trans_handle *trans, | |||
4845 | struct dentry *parent = dget_parent(dentry); | 4845 | struct dentry *parent = dget_parent(dentry); |
4846 | int ret; | 4846 | int ret; |
4847 | 4847 | ||
4848 | ret = btrfs_log_inode_parent(trans, root, dentry->d_inode, parent, | 4848 | ret = btrfs_log_inode_parent(trans, root, d_inode(dentry), parent, |
4849 | start, end, 0, ctx); | 4849 | start, end, 0, ctx); |
4850 | dput(parent); | 4850 | dput(parent); |
4851 | 4851 | ||
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index 45ea704be030..6f518c90e1c1 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c | |||
@@ -261,7 +261,7 @@ out: | |||
261 | ssize_t btrfs_listxattr(struct dentry *dentry, char *buffer, size_t size) | 261 | ssize_t btrfs_listxattr(struct dentry *dentry, char *buffer, size_t size) |
262 | { | 262 | { |
263 | struct btrfs_key key, found_key; | 263 | struct btrfs_key key, found_key; |
264 | struct inode *inode = dentry->d_inode; | 264 | struct inode *inode = d_inode(dentry); |
265 | struct btrfs_root *root = BTRFS_I(inode)->root; | 265 | struct btrfs_root *root = BTRFS_I(inode)->root; |
266 | struct btrfs_path *path; | 266 | struct btrfs_path *path; |
267 | struct extent_buffer *leaf; | 267 | struct extent_buffer *leaf; |
@@ -411,13 +411,13 @@ ssize_t btrfs_getxattr(struct dentry *dentry, const char *name, | |||
411 | ret = btrfs_is_valid_xattr(name); | 411 | ret = btrfs_is_valid_xattr(name); |
412 | if (ret) | 412 | if (ret) |
413 | return ret; | 413 | return ret; |
414 | return __btrfs_getxattr(dentry->d_inode, name, buffer, size); | 414 | return __btrfs_getxattr(d_inode(dentry), name, buffer, size); |
415 | } | 415 | } |
416 | 416 | ||
417 | int btrfs_setxattr(struct dentry *dentry, const char *name, const void *value, | 417 | int btrfs_setxattr(struct dentry *dentry, const char *name, const void *value, |
418 | size_t size, int flags) | 418 | size_t size, int flags) |
419 | { | 419 | { |
420 | struct btrfs_root *root = BTRFS_I(dentry->d_inode)->root; | 420 | struct btrfs_root *root = BTRFS_I(d_inode(dentry))->root; |
421 | int ret; | 421 | int ret; |
422 | 422 | ||
423 | /* | 423 | /* |
@@ -440,19 +440,19 @@ int btrfs_setxattr(struct dentry *dentry, const char *name, const void *value, | |||
440 | return ret; | 440 | return ret; |
441 | 441 | ||
442 | if (!strncmp(name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN)) | 442 | if (!strncmp(name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN)) |
443 | return btrfs_set_prop(dentry->d_inode, name, | 443 | return btrfs_set_prop(d_inode(dentry), name, |
444 | value, size, flags); | 444 | value, size, flags); |
445 | 445 | ||
446 | if (size == 0) | 446 | if (size == 0) |
447 | value = ""; /* empty EA, do not remove */ | 447 | value = ""; /* empty EA, do not remove */ |
448 | 448 | ||
449 | return __btrfs_setxattr(NULL, dentry->d_inode, name, value, size, | 449 | return __btrfs_setxattr(NULL, d_inode(dentry), name, value, size, |
450 | flags); | 450 | flags); |
451 | } | 451 | } |
452 | 452 | ||
453 | int btrfs_removexattr(struct dentry *dentry, const char *name) | 453 | int btrfs_removexattr(struct dentry *dentry, const char *name) |
454 | { | 454 | { |
455 | struct btrfs_root *root = BTRFS_I(dentry->d_inode)->root; | 455 | struct btrfs_root *root = BTRFS_I(d_inode(dentry))->root; |
456 | int ret; | 456 | int ret; |
457 | 457 | ||
458 | /* | 458 | /* |
@@ -475,10 +475,10 @@ int btrfs_removexattr(struct dentry *dentry, const char *name) | |||
475 | return ret; | 475 | return ret; |
476 | 476 | ||
477 | if (!strncmp(name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN)) | 477 | if (!strncmp(name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN)) |
478 | return btrfs_set_prop(dentry->d_inode, name, | 478 | return btrfs_set_prop(d_inode(dentry), name, |
479 | NULL, 0, XATTR_REPLACE); | 479 | NULL, 0, XATTR_REPLACE); |
480 | 480 | ||
481 | return __btrfs_setxattr(NULL, dentry->d_inode, name, NULL, 0, | 481 | return __btrfs_setxattr(NULL, d_inode(dentry), name, NULL, 0, |
482 | XATTR_REPLACE); | 482 | XATTR_REPLACE); |
483 | } | 483 | } |
484 | 484 | ||