mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
fs: remove fs.f_write_hint
The value is now completely unused except for reporting it back through the F_GET_FILE_RW_HINT ioctl, so remove the value and the two ioctls for it. Trying to use the F_SET_FILE_RW_HINT and F_GET_FILE_RW_HINT fcntls will now return EINVAL, just like it would on a kernel that never supported this functionality in the first place. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Link: https://lore.kernel.org/r/20220308060529.736277-3-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
41d36a9f3e
commit
7b12e49669
18
fs/fcntl.c
18
fs/fcntl.c
@ -291,22 +291,6 @@ static long fcntl_rw_hint(struct file *file, unsigned int cmd,
|
||||
u64 h;
|
||||
|
||||
switch (cmd) {
|
||||
case F_GET_FILE_RW_HINT:
|
||||
h = file_write_hint(file);
|
||||
if (copy_to_user(argp, &h, sizeof(*argp)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
case F_SET_FILE_RW_HINT:
|
||||
if (copy_from_user(&h, argp, sizeof(h)))
|
||||
return -EFAULT;
|
||||
hint = (enum rw_hint) h;
|
||||
if (!rw_hint_valid(hint))
|
||||
return -EINVAL;
|
||||
|
||||
spin_lock(&file->f_lock);
|
||||
file->f_write_hint = hint;
|
||||
spin_unlock(&file->f_lock);
|
||||
return 0;
|
||||
case F_GET_RW_HINT:
|
||||
h = inode->i_write_hint;
|
||||
if (copy_to_user(argp, &h, sizeof(*argp)))
|
||||
@ -431,8 +415,6 @@ static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,
|
||||
break;
|
||||
case F_GET_RW_HINT:
|
||||
case F_SET_RW_HINT:
|
||||
case F_GET_FILE_RW_HINT:
|
||||
case F_SET_FILE_RW_HINT:
|
||||
err = fcntl_rw_hint(filp, cmd, arg);
|
||||
break;
|
||||
default:
|
||||
|
@ -835,7 +835,6 @@ static int do_dentry_open(struct file *f,
|
||||
likely(f->f_op->write || f->f_op->write_iter))
|
||||
f->f_mode |= FMODE_CAN_WRITE;
|
||||
|
||||
f->f_write_hint = WRITE_LIFE_NOT_SET;
|
||||
f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC);
|
||||
|
||||
file_ra_state_init(&f->f_ra, f->f_mapping->host->i_mapping);
|
||||
|
@ -966,7 +966,6 @@ struct file {
|
||||
* Must not be taken from IRQ context.
|
||||
*/
|
||||
spinlock_t f_lock;
|
||||
enum rw_hint f_write_hint;
|
||||
atomic_long_t f_count;
|
||||
unsigned int f_flags;
|
||||
fmode_t f_mode;
|
||||
@ -2214,14 +2213,6 @@ static inline bool HAS_UNMAPPED_ID(struct user_namespace *mnt_userns,
|
||||
!gid_valid(i_gid_into_mnt(mnt_userns, inode));
|
||||
}
|
||||
|
||||
static inline enum rw_hint file_write_hint(struct file *file)
|
||||
{
|
||||
if (file->f_write_hint != WRITE_LIFE_NOT_SET)
|
||||
return file->f_write_hint;
|
||||
|
||||
return file_inode(file)->i_write_hint;
|
||||
}
|
||||
|
||||
static inline int iocb_flags(struct file *file);
|
||||
|
||||
static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
|
||||
|
Loading…
Reference in New Issue
Block a user