mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
vfs: remove unused i_op->rename
No in-tree uses remain. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
1cd66c93ba
commit
18fc84dafa
7 changed files with 10 additions and 31 deletions
|
@ -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)
|
cross-directory ->rename2() has (per-superblock) ->s_vfs_rename_sem.
|
||||||
->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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
The filesystem must return -EINVAL for any unsupported or
|
||||||
If no flags are supported by the filesystem then this method
|
unknown flags. Currently the following flags are implemented:
|
||||||
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:
|
|
||||||
(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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
15
fs/namei.c
15
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->rename2(old_dir, old_dentry,
|
||||||
error = old_dir->i_op->rename(old_dir, old_dentry,
|
new_dir, new_dentry, flags);
|
||||||
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);
|
|
||||||
}
|
|
||||||
if (error)
|
if (error)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
|
@ -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 *);
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue