Browse Source

vfs: remove unused i_op->rename

No in-tree uses remain.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Miklos Szeredi 9 years ago
parent
commit
18fc84dafa

+ 1 - 5
Documentation/filesystems/Locking

@@ -50,8 +50,6 @@ prototypes:
 	int (*mkdir) (struct inode *,struct dentry *,umode_t);
 	int (*mkdir) (struct inode *,struct dentry *,umode_t);
 	int (*rmdir) (struct inode *,struct dentry *);
 	int (*rmdir) (struct inode *,struct dentry *);
 	int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
 	int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
-	int (*rename) (struct inode *, struct dentry *,
-			struct inode *, struct dentry *);
 	int (*rename2) (struct inode *, struct dentry *,
 	int (*rename2) (struct inode *, struct dentry *,
 			struct inode *, struct dentry *, unsigned int);
 			struct inode *, struct dentry *, unsigned int);
 	int (*readlink) (struct dentry *, char __user *,int);
 	int (*readlink) (struct dentry *, char __user *,int);
@@ -83,7 +81,6 @@ symlink:	yes
 mkdir:		yes
 mkdir:		yes
 unlink:		yes (both)
 unlink:		yes (both)
 rmdir:		yes (both)	(see below)
 rmdir:		yes (both)	(see below)
-rename:		yes (all)	(see below)
 rename2:	yes (all)	(see below)
 rename2:	yes (all)	(see below)
 readlink:	no
 readlink:	no
 get_link:	no
 get_link:	no
@@ -102,8 +99,7 @@ tmpfile:	no
 
 
 	Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
 	Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
 victim.
 victim.
-	cross-directory ->rename() and rename2() has (per-superblock)
-->s_vfs_rename_sem.
+	cross-directory ->rename2() has (per-superblock) ->s_vfs_rename_sem.
 
 
 See Documentation/filesystems/directory-locking for more detailed discussion
 See Documentation/filesystems/directory-locking for more detailed discussion
 of the locking scheme for directory operations.
 of the locking scheme for directory operations.

+ 1 - 1
Documentation/filesystems/directory-locking

@@ -19,7 +19,7 @@ locks victim and calls the method.  Locks are exclusive.
 
 
 4) rename() that is _not_ cross-directory.  Locking rules: caller locks
 4) rename() that is _not_ cross-directory.  Locking rules: caller locks
 the parent and finds source and target.  In case of exchange (with
 the parent and finds source and target.  In case of exchange (with
-RENAME_EXCHANGE in rename2() flags argument) lock both.  In any case,
+RENAME_EXCHANGE in flags argument) lock both.  In any case,
 if the target already exists, lock it.  If the source is a non-directory,
 if the target already exists, lock it.  If the source is a non-directory,
 lock it.  If we need to lock both, lock them in inode pointer order.
 lock it.  If we need to lock both, lock them in inode pointer order.
 Then call the method.  All locks are exclusive.
 Then call the method.  All locks are exclusive.

+ 2 - 7
Documentation/filesystems/vfs.txt

@@ -345,8 +345,6 @@ struct inode_operations {
 	int (*mkdir) (struct inode *,struct dentry *,umode_t);
 	int (*mkdir) (struct inode *,struct dentry *,umode_t);
 	int (*rmdir) (struct inode *,struct dentry *);
 	int (*rmdir) (struct inode *,struct dentry *);
 	int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
 	int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
-	int (*rename) (struct inode *, struct dentry *,
-			struct inode *, struct dentry *);
 	int (*rename2) (struct inode *, struct dentry *,
 	int (*rename2) (struct inode *, struct dentry *,
 			struct inode *, struct dentry *, unsigned int);
 			struct inode *, struct dentry *, unsigned int);
 	int (*readlink) (struct dentry *, char __user *,int);
 	int (*readlink) (struct dentry *, char __user *,int);
@@ -416,11 +414,8 @@ otherwise noted.
   rename: called by the rename(2) system call to rename the object to
   rename: called by the rename(2) system call to rename the object to
 	have the parent and name given by the second inode and dentry.
 	have the parent and name given by the second inode and dentry.
 
 
-  rename2: this has an additional flags argument compared to rename.
-	If no flags are supported by the filesystem then this method
-	need not be implemented.  If some flags are supported then the
-	filesystem must return -EINVAL for any unsupported or unknown
-	flags.  Currently the following flags are implemented:
+	The filesystem must return -EINVAL for any unsupported or
+	unknown	flags.  Currently the following flags are implemented:
 	(1) RENAME_NOREPLACE: this flag indicates that if the target
 	(1) RENAME_NOREPLACE: this flag indicates that if the target
 	of the rename exists the rename should fail with -EEXIST
 	of the rename exists the rename should fail with -EEXIST
 	instead of replacing the target.  The VFS already checks for
 	instead of replacing the target.  The VFS already checks for

+ 1 - 2
fs/cachefiles/namei.c

@@ -804,8 +804,7 @@ struct dentry *cachefiles_get_directory(struct cachefiles_cache *cache,
 	    !d_backing_inode(subdir)->i_op->lookup ||
 	    !d_backing_inode(subdir)->i_op->lookup ||
 	    !d_backing_inode(subdir)->i_op->mkdir ||
 	    !d_backing_inode(subdir)->i_op->mkdir ||
 	    !d_backing_inode(subdir)->i_op->create ||
 	    !d_backing_inode(subdir)->i_op->create ||
-	    (!d_backing_inode(subdir)->i_op->rename &&
-	     !d_backing_inode(subdir)->i_op->rename2) ||
+	    !d_backing_inode(subdir)->i_op->rename2 ||
 	    !d_backing_inode(subdir)->i_op->rmdir ||
 	    !d_backing_inode(subdir)->i_op->rmdir ||
 	    !d_backing_inode(subdir)->i_op->unlink)
 	    !d_backing_inode(subdir)->i_op->unlink)
 		goto check_error;
 		goto check_error;

+ 3 - 12
fs/namei.c

@@ -4369,12 +4369,9 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
 	if (error)
 	if (error)
 		return error;
 		return error;
 
 
-	if (!old_dir->i_op->rename && !old_dir->i_op->rename2)
+	if (!old_dir->i_op->rename2)
 		return -EPERM;
 		return -EPERM;
 
 
-	if (flags && !old_dir->i_op->rename2)
-		return -EINVAL;
-
 	/*
 	/*
 	 * If we are going to change the parent - check write permissions,
 	 * If we are going to change the parent - check write permissions,
 	 * we'll need to flip '..'.
 	 * we'll need to flip '..'.
@@ -4428,14 +4425,8 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
 		if (error)
 		if (error)
 			goto out;
 			goto out;
 	}
 	}
-	if (!old_dir->i_op->rename2) {
-		error = old_dir->i_op->rename(old_dir, old_dentry,
-					      new_dir, new_dentry);
-	} else {
-		WARN_ON(old_dir->i_op->rename != NULL);
-		error = old_dir->i_op->rename2(old_dir, old_dentry,
-					       new_dir, new_dentry, flags);
-	}
+	error = old_dir->i_op->rename2(old_dir, old_dentry,
+				       new_dir, new_dentry, flags);
 	if (error)
 	if (error)
 		goto out;
 		goto out;
 
 

+ 0 - 2
include/linux/fs.h

@@ -1732,8 +1732,6 @@ struct inode_operations {
 	int (*mkdir) (struct inode *,struct dentry *,umode_t);
 	int (*mkdir) (struct inode *,struct dentry *,umode_t);
 	int (*rmdir) (struct inode *,struct dentry *);
 	int (*rmdir) (struct inode *,struct dentry *);
 	int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
 	int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);
-	int (*rename) (struct inode *, struct dentry *,
-			struct inode *, struct dentry *);
 	int (*rename2) (struct inode *, struct dentry *,
 	int (*rename2) (struct inode *, struct dentry *,
 			struct inode *, struct dentry *, unsigned int);
 			struct inode *, struct dentry *, unsigned int);
 	int (*setattr) (struct dentry *, struct iattr *);
 	int (*setattr) (struct dentry *, struct iattr *);

+ 2 - 2
security/tomoyo/realpath.c

@@ -173,7 +173,7 @@ static char *tomoyo_get_local_path(struct dentry *dentry, char * const buffer,
 		 * Use filesystem name if filesystem does not support rename()
 		 * Use filesystem name if filesystem does not support rename()
 		 * operation.
 		 * operation.
 		 */
 		 */
-		if (!inode->i_op->rename && !inode->i_op->rename2)
+		if (!inode->i_op->rename2)
 			goto prepend_filesystem_name;
 			goto prepend_filesystem_name;
 	}
 	}
 	/* Prepend device name. */
 	/* Prepend device name. */
@@ -283,7 +283,7 @@ char *tomoyo_realpath_from_path(const struct path *path)
 		 * or dentry without vfsmount.
 		 * or dentry without vfsmount.
 		 */
 		 */
 		if (!path->mnt ||
 		if (!path->mnt ||
-		    (!inode->i_op->rename && !inode->i_op->rename2))
+		    (!inode->i_op->rename2))
 			pos = tomoyo_get_local_path(path->dentry, buf,
 			pos = tomoyo_get_local_path(path->dentry, buf,
 						    buf_len - 1);
 						    buf_len - 1);
 		/* Get absolute name for the rest. */
 		/* Get absolute name for the rest. */