Wrapfs: no need to call mnt_want_write any longer
authorErez Zadok <ezk@cs.sunysb.edu>
Wed, 5 Jun 2013 03:19:30 +0000 (23:19 -0400)
committerErez Zadok <ezk@cs.sunysb.edu>
Sun, 3 Apr 2016 19:23:21 +0000 (15:23 -0400)
Apparently this is now being done by the VFS.

Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
fs/wrapfs/inode.c

index 32fe447240c394b632f6f1e7347a5da44d3e5e6c..d7fe1451efd395b69d3652c5cff461d396013135 100644 (file)
@@ -23,10 +23,6 @@ static int wrapfs_create(struct inode *dir, struct dentry *dentry,
        lower_dentry = lower_path.dentry;
        lower_parent_dentry = lock_parent(lower_dentry);
 
-       err = mnt_want_write(lower_path.mnt);
-       if (err)
-               goto out_unlock;
-
        err = vfs_create(lower_parent_dentry->d_inode, lower_dentry, mode,
                         want_excl);
        if (err)
@@ -38,8 +34,6 @@ static int wrapfs_create(struct inode *dir, struct dentry *dentry,
        fsstack_copy_inode_size(dir, lower_parent_dentry->d_inode);
 
 out:
-       mnt_drop_write(lower_path.mnt);
-out_unlock:
        unlock_dir(lower_parent_dentry);
        wrapfs_put_lower_path(dentry, &lower_path);
        return err;
@@ -62,10 +56,6 @@ static int wrapfs_link(struct dentry *old_dentry, struct inode *dir,
        lower_new_dentry = lower_new_path.dentry;
        lower_dir_dentry = lock_parent(lower_new_dentry);
 
-       err = mnt_want_write(lower_new_path.mnt);
-       if (err)
-               goto out_unlock;
-
        err = vfs_link(lower_old_dentry, lower_dir_dentry->d_inode,
                       lower_new_dentry);
        if (err || !lower_new_dentry->d_inode)
@@ -80,8 +70,6 @@ static int wrapfs_link(struct dentry *old_dentry, struct inode *dir,
                  wrapfs_lower_inode(old_dentry->d_inode)->i_nlink);
        i_size_write(new_dentry->d_inode, file_size_save);
 out:
-       mnt_drop_write(lower_new_path.mnt);
-out_unlock:
        unlock_dir(lower_dir_dentry);
        wrapfs_put_lower_path(old_dentry, &lower_old_path);
        wrapfs_put_lower_path(new_dentry, &lower_new_path);
@@ -101,9 +89,6 @@ static int wrapfs_unlink(struct inode *dir, struct dentry *dentry)
        dget(lower_dentry);
        lower_dir_dentry = lock_parent(lower_dentry);
 
-       err = mnt_want_write(lower_path.mnt);
-       if (err)
-               goto out_unlock;
        err = vfs_unlink(lower_dir_inode, lower_dentry);
 
        /*
@@ -124,8 +109,6 @@ static int wrapfs_unlink(struct inode *dir, struct dentry *dentry)
        dentry->d_inode->i_ctime = dir->i_ctime;
        d_drop(dentry); /* this is needed, else LTP fails (VFS won't do it) */
 out:
-       mnt_drop_write(lower_path.mnt);
-out_unlock:
        unlock_dir(lower_dir_dentry);
        dput(lower_dentry);
        wrapfs_put_lower_path(dentry, &lower_path);
@@ -144,9 +127,6 @@ static int wrapfs_symlink(struct inode *dir, struct dentry *dentry,
        lower_dentry = lower_path.dentry;
        lower_parent_dentry = lock_parent(lower_dentry);
 
-       err = mnt_want_write(lower_path.mnt);
-       if (err)
-               goto out_unlock;
        err = vfs_symlink(lower_parent_dentry->d_inode, lower_dentry, symname);
        if (err)
                goto out;
@@ -157,8 +137,6 @@ static int wrapfs_symlink(struct inode *dir, struct dentry *dentry,
        fsstack_copy_inode_size(dir, lower_parent_dentry->d_inode);
 
 out:
-       mnt_drop_write(lower_path.mnt);
-out_unlock:
        unlock_dir(lower_parent_dentry);
        wrapfs_put_lower_path(dentry, &lower_path);
        return err;
@@ -175,9 +153,6 @@ static int wrapfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
        lower_dentry = lower_path.dentry;
        lower_parent_dentry = lock_parent(lower_dentry);
 
-       err = mnt_want_write(lower_path.mnt);
-       if (err)
-               goto out_unlock;
        err = vfs_mkdir(lower_parent_dentry->d_inode, lower_dentry, mode);
        if (err)
                goto out;
@@ -192,8 +167,6 @@ static int wrapfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
        set_nlink(dir, wrapfs_lower_inode(dir)->i_nlink);
 
 out:
-       mnt_drop_write(lower_path.mnt);
-out_unlock:
        unlock_dir(lower_parent_dentry);
        wrapfs_put_lower_path(dentry, &lower_path);
        return err;
@@ -210,9 +183,6 @@ static int wrapfs_rmdir(struct inode *dir, struct dentry *dentry)
        lower_dentry = lower_path.dentry;
        lower_dir_dentry = lock_parent(lower_dentry);
 
-       err = mnt_want_write(lower_path.mnt);
-       if (err)
-               goto out_unlock;
        err = vfs_rmdir(lower_dir_dentry->d_inode, lower_dentry);
        if (err)
                goto out;
@@ -225,8 +195,6 @@ static int wrapfs_rmdir(struct inode *dir, struct dentry *dentry)
        set_nlink(dir, lower_dir_dentry->d_inode->i_nlink);
 
 out:
-       mnt_drop_write(lower_path.mnt);
-out_unlock:
        unlock_dir(lower_dir_dentry);
        wrapfs_put_lower_path(dentry, &lower_path);
        return err;
@@ -244,9 +212,6 @@ static int wrapfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,
        lower_dentry = lower_path.dentry;
        lower_parent_dentry = lock_parent(lower_dentry);
 
-       err = mnt_want_write(lower_path.mnt);
-       if (err)
-               goto out_unlock;
        err = vfs_mknod(lower_parent_dentry->d_inode, lower_dentry, mode, dev);
        if (err)
                goto out;
@@ -258,8 +223,6 @@ static int wrapfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,
        fsstack_copy_inode_size(dir, lower_parent_dentry->d_inode);
 
 out:
-       mnt_drop_write(lower_path.mnt);
-out_unlock:
        unlock_dir(lower_parent_dentry);
        wrapfs_put_lower_path(dentry, &lower_path);
        return err;
@@ -299,17 +262,10 @@ static int wrapfs_rename(struct inode *old_dir, struct dentry *old_dentry,
                goto out;
        }
 
-       err = mnt_want_write(lower_old_path.mnt);
-       if (err)
-               goto out;
-       err = mnt_want_write(lower_new_path.mnt);
-       if (err)
-               goto out_drop_old_write;
-
        err = vfs_rename(lower_old_dir_dentry->d_inode, lower_old_dentry,
                         lower_new_dir_dentry->d_inode, lower_new_dentry);
        if (err)
-               goto out_err;
+               goto out;
 
        fsstack_copy_attr_all(new_dir, lower_new_dir_dentry->d_inode);
        fsstack_copy_inode_size(new_dir, lower_new_dir_dentry->d_inode);
@@ -320,10 +276,6 @@ static int wrapfs_rename(struct inode *old_dir, struct dentry *old_dentry,
                                        lower_old_dir_dentry->d_inode);
        }
 
-out_err:
-       mnt_drop_write(lower_new_path.mnt);
-out_drop_old_write:
-       mnt_drop_write(lower_old_path.mnt);
 out:
        unlock_rename(lower_old_dir_dentry, lower_new_dir_dentry);
        dput(lower_old_dir_dentry);