vfs: Make d_invalidate return void
authorEric W. Biederman <ebiederm@xmission.com>
Thu, 13 Feb 2014 17:46:25 +0000 (09:46 -0800)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 9 Oct 2014 06:38:57 +0000 (02:38 -0400)
Now that d_invalidate can no longer fail, stop returning a useless
return code.  For the few callers that checked the return code update
remove the handling of d_invalidate failure.

Reviewed-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/btrfs/ioctl.c
fs/cifs/readdir.c
fs/dcache.c
fs/fuse/dir.c
fs/namei.c
fs/nfs/dir.c
include/linux/dcache.h

index 8a8e29878c34283812f8d990c2432cff94bbab2a..996eb192fa770f0bdbf7af5adce5acd66b8405be 100644 (file)
@@ -2423,9 +2423,7 @@ static noinline int btrfs_ioctl_snap_destroy(struct file *file,
                goto out_dput;
        }
 
-       err = d_invalidate(dentry);
-       if (err)
-               goto out_unlock;
+       d_invalidate(dentry);
 
        down_write(&root->fs_info->subvol_sem);
 
@@ -2510,7 +2508,6 @@ out_release:
        btrfs_subvolume_release_metadata(root, &block_rsv, qgroup_reserved);
 out_up_write:
        up_write(&root->fs_info->subvol_sem);
-out_unlock:
        if (err) {
                spin_lock(&dest->root_item_lock);
                root_flags = btrfs_root_flags(&dest->root_item);
index b334a89d6a66eb2151973d6405083db3c254710b..d2141f1013829d028ac1b9df15f2a05b254923d4 100644 (file)
@@ -87,8 +87,6 @@ cifs_prime_dcache(struct dentry *parent, struct qstr *name,
                return;
 
        if (dentry) {
-               int err;
-
                inode = dentry->d_inode;
                if (inode) {
                        /*
@@ -105,10 +103,8 @@ cifs_prime_dcache(struct dentry *parent, struct qstr *name,
                                goto out;
                        }
                }
-               err = d_invalidate(dentry);
+               d_invalidate(dentry);
                dput(dentry);
-               if (err)
-                       return;
        }
 
        /*
index 5e02b9eee6b174e0d64d5eadab5cc1caea45a284..70d102e70271707a3b6217f3a2b55ee77f681e89 100644 (file)
@@ -1346,34 +1346,28 @@ static void check_and_drop(void *_data)
  * d_invalidate - detach submounts, prune dcache, and drop
  * @dentry: dentry to invalidate (aka detach, prune and drop)
  *
- * Try to invalidate the dentry if it turns out to be
- * possible. If there are reasons not to delete it
- * return -EBUSY. On success return 0.
- *
  * no dcache lock.
  *
  * The final d_drop is done as an atomic operation relative to
  * rename_lock ensuring there are no races with d_set_mounted.  This
  * ensures there are no unhashed dentries on the path to a mountpoint.
  */
-int d_invalidate(struct dentry *dentry)
+void d_invalidate(struct dentry *dentry)
 {
-       int ret = 0;
-
        /*
         * If it's already been dropped, return OK.
         */
        spin_lock(&dentry->d_lock);
        if (d_unhashed(dentry)) {
                spin_unlock(&dentry->d_lock);
-               return 0;
+               return;
        }
        spin_unlock(&dentry->d_lock);
 
        /* Negative dentries can be dropped without further checks */
        if (!dentry->d_inode) {
                d_drop(dentry);
-               goto out;
+               return;
        }
 
        for (;;) {
@@ -1399,9 +1393,6 @@ int d_invalidate(struct dentry *dentry)
 
                cond_resched();
        }
-
-out:
-       return ret;
 }
 EXPORT_SYMBOL(d_invalidate);
 
index 820efd74ca9fec310f84645d6a945fdf7c1205c6..dbab798f5cafefd8e0ad848298a7baa0f1b70ad4 100644 (file)
@@ -1286,9 +1286,7 @@ static int fuse_direntplus_link(struct file *file,
                        d_drop(dentry);
                } else if (get_node_id(inode) != o->nodeid ||
                           ((o->attr.mode ^ inode->i_mode) & S_IFMT)) {
-                       err = d_invalidate(dentry);
-                       if (err)
-                               goto out;
+                       d_invalidate(dentry);
                } else if (is_bad_inode(inode)) {
                        err = -EIO;
                        goto out;
index 2ba10904dba0698bb9be3091bff475ddcdb9c7aa..d20d579a022e45e3e9c23fc2356bf37ec204a445 100644 (file)
@@ -1306,7 +1306,8 @@ static struct dentry *lookup_dcache(struct qstr *name, struct dentry *dir,
                                if (error < 0) {
                                        dput(dentry);
                                        return ERR_PTR(error);
-                               } else if (!d_invalidate(dentry)) {
+                               } else {
+                                       d_invalidate(dentry);
                                        dput(dentry);
                                        dentry = NULL;
                                }
@@ -1435,10 +1436,9 @@ unlazy:
                        dput(dentry);
                        return status;
                }
-               if (!d_invalidate(dentry)) {
-                       dput(dentry);
-                       goto need_lookup;
-               }
+               d_invalidate(dentry);
+               dput(dentry);
+               goto need_lookup;
        }
 
        path->mnt = mnt;
index 8be6988a1c6c6df9b267ea6dfba3d673213f1437..06e8cfcbb67053759d9b2b17e4c68a4547b257da 100644 (file)
@@ -486,8 +486,7 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry)
                                nfs_setsecurity(dentry->d_inode, entry->fattr, entry->label);
                        goto out;
                } else {
-                       if (d_invalidate(dentry) != 0)
-                               goto out;
+                       d_invalidate(dentry);
                        dput(dentry);
                }
        }
index 595af29ad145106459a62afcb5ceb64647c3051f..81b03150f39aa96e11fc866a15e38fb2eeca27b1 100644 (file)
@@ -254,7 +254,7 @@ extern struct dentry * d_obtain_root(struct inode *);
 extern void shrink_dcache_sb(struct super_block *);
 extern void shrink_dcache_parent(struct dentry *);
 extern void shrink_dcache_for_umount(struct super_block *);
-extern int d_invalidate(struct dentry *);
+extern void d_invalidate(struct dentry *);
 
 /* only used at mount-time */
 extern struct dentry * d_make_root(struct inode *);