diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2009-05-03 19:32:03 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-06-11 21:36:06 -0400 |
commit | f3da392e9ff14b9f388e74319e6d195848991c07 (patch) | |
tree | d9e7660e5c0b4524aeaafcc5b89a9d68a7ca3817 /fs/namespace.c | |
parent | 8c85e125124a473d6f3e9bb187b0b84207f81d91 (diff) |
dcache: extrace and use d_unlinked()
d_unlinked() will be used in middle-term to ban checkpointing when opened
but unlinked file is detected, and in long term, to detect such situation
and special case on it.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namespace.c')
-rw-r--r-- | fs/namespace.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index 120b8a6b99e..7e537f0393b 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -1384,7 +1384,7 @@ static int graft_tree(struct vfsmount *mnt, struct path *path) | |||
1384 | goto out_unlock; | 1384 | goto out_unlock; |
1385 | 1385 | ||
1386 | err = -ENOENT; | 1386 | err = -ENOENT; |
1387 | if (IS_ROOT(path->dentry) || !d_unhashed(path->dentry)) | 1387 | if (!d_unlinked(path->dentry)) |
1388 | err = attach_recursive_mnt(mnt, path, NULL); | 1388 | err = attach_recursive_mnt(mnt, path, NULL); |
1389 | out_unlock: | 1389 | out_unlock: |
1390 | mutex_unlock(&path->dentry->d_inode->i_mutex); | 1390 | mutex_unlock(&path->dentry->d_inode->i_mutex); |
@@ -1566,7 +1566,7 @@ static int do_move_mount(struct path *path, char *old_name) | |||
1566 | if (IS_DEADDIR(path->dentry->d_inode)) | 1566 | if (IS_DEADDIR(path->dentry->d_inode)) |
1567 | goto out1; | 1567 | goto out1; |
1568 | 1568 | ||
1569 | if (!IS_ROOT(path->dentry) && d_unhashed(path->dentry)) | 1569 | if (d_unlinked(path->dentry)) |
1570 | goto out1; | 1570 | goto out1; |
1571 | 1571 | ||
1572 | err = -EINVAL; | 1572 | err = -EINVAL; |
@@ -2129,9 +2129,9 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, | |||
2129 | error = -ENOENT; | 2129 | error = -ENOENT; |
2130 | if (IS_DEADDIR(new.dentry->d_inode)) | 2130 | if (IS_DEADDIR(new.dentry->d_inode)) |
2131 | goto out2; | 2131 | goto out2; |
2132 | if (d_unhashed(new.dentry) && !IS_ROOT(new.dentry)) | 2132 | if (d_unlinked(new.dentry)) |
2133 | goto out2; | 2133 | goto out2; |
2134 | if (d_unhashed(old.dentry) && !IS_ROOT(old.dentry)) | 2134 | if (d_unlinked(old.dentry)) |
2135 | goto out2; | 2135 | goto out2; |
2136 | error = -EBUSY; | 2136 | error = -EBUSY; |
2137 | if (new.mnt == root.mnt || | 2137 | if (new.mnt == root.mnt || |