summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/tree-log.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-26 18:48:49 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-26 20:22:07 -0400
commit9ec3a646fe09970f801ab15e0f1694060b9f19af (patch)
tree697058ca7e1671eda180a3ccc62445686fbc1a31 /fs/btrfs/tree-log.c
parentc8b3fd0ce313443731e8fd6d5a541085eb465f99 (diff)
parent3cab989afd8d8d1bc3d99fef0e7ed87c31e7b647 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull fourth vfs update from Al Viro: "d_inode() annotations from David Howells (sat in for-next since before the beginning of merge window) + four assorted fixes" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: RCU pathwalk breakage when running into a symlink overmounting something fix I_DIO_WAKEUP definition direct-io: only inc/dec inode->i_dio_count for file systems fs/9p: fix readdir() VFS: assorted d_backing_inode() annotations VFS: fs/inode.c helpers: d_inode() annotations VFS: fs/cachefiles: d_backing_inode() annotations VFS: fs library helpers: d_inode() annotations VFS: assorted weird filesystems: d_inode() annotations VFS: normal filesystems (and lustre): d_inode() annotations VFS: security/: d_inode() annotations VFS: security/: d_backing_inode() annotations VFS: net/: d_inode() annotations VFS: net/unix: d_backing_inode() annotations VFS: kernel/: d_inode() annotations VFS: audit: d_backing_inode() annotations VFS: Fix up some ->d_inode accesses in the chelsio driver VFS: Cachefiles should perform fs modifications on the top layer only VFS: AF_UNIX sockets should call mknod on the top layer only
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