diff options
Diffstat (limited to 'fs/btrfs/tree-log.c')
-rw-r--r-- | fs/btrfs/tree-log.c | 14 |
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 | ||