OSDN Git Service

lustre: get rid of duplicate mountpoint checks
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 21 Oct 2014 03:36:49 +0000 (23:36 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 3 Nov 2014 20:21:18 +0000 (15:21 -0500)
VFS has already done them

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/staging/lustre/lustre/llite/namei.c

index 9ea8782..02283c5 100644 (file)
 static int ll_create_it(struct inode *, struct dentry *,
                        int, struct lookup_intent *);
 
-/*
- * Check if we have something mounted at the named dchild.
- * In such a case there would always be dentry present.
- */
-static int ll_d_mountpoint(struct dentry *dparent, struct dentry *dchild,
-                          struct qstr *name)
-{
-       int mounted = 0;
-
-       if (unlikely(dchild)) {
-               mounted = d_mountpoint(dchild);
-       } else if (dparent) {
-               dchild = d_lookup(dparent, name);
-               if (dchild) {
-                       mounted = d_mountpoint(dchild);
-                       dput(dchild);
-               }
-       }
-       return mounted;
-}
-
 /* called from iget5_locked->find_inode() under inode_hash_lock spinlock */
 static int ll_test_inode(struct inode *inode, void *opaque)
 {
@@ -1003,13 +982,6 @@ static int ll_unlink(struct inode * dir, struct dentry *dentry)
        CDEBUG(D_VFSTRACE, "VFS Op:name=%pd,dir=%lu/%u(%p)\n",
               dentry, dir->i_ino, dir->i_generation, dir);
 
-       /*
-        * XXX: unlink bind mountpoint maybe call to here,
-        * just check it as vfs_unlink does.
-        */
-       if (unlikely(ll_d_mountpoint(NULL, dentry, &dentry->d_name)))
-               return -EBUSY;
-
        op_data = ll_prep_md_op_data(NULL, dir, NULL,
                                     dentry->d_name.name,
                                     dentry->d_name.len,
@@ -1060,9 +1032,6 @@ static int ll_rmdir(struct inode *dir, struct dentry *dentry)
        CDEBUG(D_VFSTRACE, "VFS Op:name=%pd,dir=%lu/%u(%p)\n",
               dentry, dir->i_ino, dir->i_generation, dir);
 
-       if (unlikely(ll_d_mountpoint(NULL, dentry, &dentry->d_name)))
-               return -EBUSY;
-
        op_data = ll_prep_md_op_data(NULL, dir, NULL,
                                     dentry->d_name.name, 
                                     dentry->d_name.len,
@@ -1147,10 +1116,6 @@ static int ll_rename(struct inode *old_dir, struct dentry *old_dentry,
               old_dir->i_ino, old_dir->i_generation, old_dir, new_dentry,
               new_dir->i_ino, new_dir->i_generation, new_dir);
 
-       if (unlikely(ll_d_mountpoint(NULL, old_dentry, &old_dentry->d_name) ||
-           ll_d_mountpoint(NULL, new_dentry, &new_dentry->d_name)))
-               return -EBUSY;
-
        op_data = ll_prep_md_op_data(NULL, old_dir, new_dir, NULL, 0, 0,
                                     LUSTRE_OPC_ANY, NULL);
        if (IS_ERR(op_data))