Re: [PATCH 1/2] fs: Add fd_install file operation

From: Kalesh Singh
Date: Tue Aug 04 2020 - 09:54:22 EST


On Mon, Aug 03, 2020 at 08:30:59PM -0400, Joel Fernandes wrote:
> On Mon, Aug 3, 2020 at 10:47 AM 'Kalesh Singh' via kernel-team
> <kernel-team@xxxxxxxxxxx> wrote:
> >
> > Provides a per process hook for the acquisition of file descriptors,
> > despite the method used to obtain the descriptor.
> >
>
> Hi,
> So apart from all of the comments received, I think it is hard to
> understand what the problem is, what the front-end looks like etc.
> Your commit message is 1 line only.
>
> I do remember some of the challenges discussed before, but it would
> describe the problem in the commit message in detail and then discuss
> why this solution is fit. Please read submitting-patches.rst
> especially "2) Describe your changes".
>
> thanks,
>
> - Joel

Thanks for the advice Joel :)
>
>
> > Signed-off-by: Kalesh Singh <kaleshsingh@xxxxxxxxxx>
> > ---
> > Documentation/filesystems/vfs.rst | 5 +++++
> > fs/file.c | 3 +++
> > include/linux/fs.h | 1 +
> > 3 files changed, 9 insertions(+)
> >
> > diff --git a/Documentation/filesystems/vfs.rst b/Documentation/filesystems/vfs.rst
> > index ed17771c212b..95b30142c8d9 100644
> > --- a/Documentation/filesystems/vfs.rst
> > +++ b/Documentation/filesystems/vfs.rst
> > @@ -1123,6 +1123,11 @@ otherwise noted.
> > ``fadvise``
> > possibly called by the fadvise64() system call.
> >
> > +``fd_install``
> > + called by the VFS when a file descriptor is installed in the
> > + process's file descriptor table, regardless how the file descriptor
> > + was acquired -- be it via the open syscall, received over IPC, etc.
> > +
> > Note that the file operations are implemented by the specific
> > filesystem in which the inode resides. When opening a device node
> > (character or block special) most filesystems will call special
> > diff --git a/fs/file.c b/fs/file.c
> > index abb8b7081d7a..f5db8622b851 100644
> > --- a/fs/file.c
> > +++ b/fs/file.c
> > @@ -616,6 +616,9 @@ void __fd_install(struct files_struct *files, unsigned int fd,
> > void fd_install(unsigned int fd, struct file *file)
> > {
> > __fd_install(current->files, fd, file);
> > +
> > + if (file->f_op->fd_install)
> > + file->f_op->fd_install(fd, file);
> > }
> >
> > EXPORT_SYMBOL(fd_install);
> > diff --git a/include/linux/fs.h b/include/linux/fs.h
> > index f5abba86107d..b976fbe8c902 100644
> > --- a/include/linux/fs.h
> > +++ b/include/linux/fs.h
> > @@ -1864,6 +1864,7 @@ struct file_operations {
> > struct file *file_out, loff_t pos_out,
> > loff_t len, unsigned int remap_flags);
> > int (*fadvise)(struct file *, loff_t, loff_t, int);
> > + void (*fd_install)(int, struct file *);
> > } __randomize_layout;
> >
> > struct inode_operations {
> > --
> > 2.28.0.163.g6104cc2f0b6-goog
> >
> > --
> > To unsubscribe from this group and stop receiving emails from it, send an email to kernel-team+unsubscribe@xxxxxxxxxxx.
> >