summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/tree-log.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/tree-log.c')
-rw-r--r--fs/btrfs/tree-log.c14
1 files changed, 7 insertions, 7 deletions
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