Messages in this thread | | | Date | Thu, 30 Jun 2022 09:45:04 +0300 | Subject | Re: [PATCH v3 5/7] fs: remove no_llseek | From | Nikolay Borisov <> |
| |
On 29.06.22 г. 16:07 ч., Jason A. Donenfeld wrote: > Now that all callers of ->llseek are going through vfs_llseek(), we > don't gain anything by keeping no_llseek around. Nothing compares it or > calls it. > > Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> > --- > fs/read_write.c | 17 +++-------------- > include/linux/fs.h | 1 - > 2 files changed, 3 insertions(+), 15 deletions(-) > > diff --git a/fs/read_write.c b/fs/read_write.c > index b1b1cdfee9d3..69cd8d72d91e 100644 > --- a/fs/read_write.c > +++ b/fs/read_write.c > @@ -227,12 +227,6 @@ loff_t noop_llseek(struct file *file, loff_t offset, int whence) > } > EXPORT_SYMBOL(noop_llseek); > > -loff_t no_llseek(struct file *file, loff_t offset, int whence) > -{ > - return -ESPIPE; > -} > -EXPORT_SYMBOL(no_llseek); > - > loff_t default_llseek(struct file *file, loff_t offset, int whence) > { > struct inode *inode = file_inode(file); > @@ -290,14 +284,9 @@ EXPORT_SYMBOL(default_llseek); > > loff_t vfs_llseek(struct file *file, loff_t offset, int whence) > { > - loff_t (*fn)(struct file *, loff_t, int); > - > - fn = no_llseek; > - if (file->f_mode & FMODE_LSEEK) { > - if (file->f_op->llseek) > - fn = file->f_op->llseek; > - } > - return fn(file, offset, whence); > + if (!(file->f_mode & FMODE_LSEEK) || !file->f_op->llseek)
Is it not sufficient here to just check for the presence of FMODE_LSEEK? NULL llseek shall result in FMODE_LSEEK not being set when the file is opened?
> + return -ESPIPE; > + return file->f_op->llseek(file, offset, whence); > } > EXPORT_SYMBOL(vfs_llseek); > > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 9ad5e3520fae..0cb5a1706e1f 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -3022,7 +3022,6 @@ extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out, > extern void > file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping); > extern loff_t noop_llseek(struct file *file, loff_t offset, int whence); > -extern loff_t no_llseek(struct file *file, loff_t offset, int whence); > extern loff_t vfs_setpos(struct file *file, loff_t offset, loff_t maxsize); > extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence); > extern loff_t generic_file_llseek_size(struct file *file, loff_t offset,
| |