Re: [PATCH] fnotify: invalidate dcache before IN_DELETE event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu 20-01-22 16:31:11, Amir Goldstein wrote:
> On Thu, Jan 20, 2022 at 2:52 PM Jan Kara <jack@xxxxxxx> wrote:
> > > +/*
> > > + * fsnotify_delete - @dentry was unlinked and unhashed
> > > + *
> > > + * Caller must make sure that dentry->d_name is stable.
> > > + *
> > > + * Note: unlike fsnotify_unlink(), we have to pass also the unlinked inode
> > > + * as this may be called after d_delete() and old_dentry may be negative.
> > > + */
> > > +static inline void fsnotify_delete(struct inode *dir, struct inode *inode,
> > > +                                struct dentry *dentry)
> > > +{
> > > +     __u32 mask = FS_DELETE;
> > > +
> > > +     if (S_ISDIR(inode->i_mode))
> > > +             mask |= FS_ISDIR;
> > > +
> > > +     fsnotify_name(mask, inode, FSNOTIFY_EVENT_INODE, dir, &dentry->d_name,
> > > +                   0);
> > > +}
> > > +
> >
> > OK, this is fine because we use dentry only for FAN_RENAME event, don't we?
> 
> Almost.
> We also use dentry in FS_CREATE to get sb from d_sb for error event, because:
>  * Note: some filesystems (e.g. kernfs) leave @dentry negative and instantiate
>  * ->d_inode later

Ah, right.

> > In all other cases we always use only inode anyway. Can we perhaps cleanup
> > include/linux/fsnotify.h to use FSNOTIFY_EVENT_DENTRY only in that one call
> > site inside fsnotify_move() and use FSNOTIFY_EVENT_INODE in all the other
> > cases? So that this is clear and also so that we don't start using dentry
> > inadvertedly for something inside fsnotify thus breaking unlink reporting
> > in subtle ways...
> >
> 
> I don't know.
> For fsnotify_unlink/rmdir we check d_is_negative, so it's fine to use
> FSNOTIFY_EVENT_INODE.
> For fsnotify_link,fsnotify_move we get the inode explicitly, but we already
> use FSNOTIFY_EVENT_INODE in those cases (except FS_RENAME).

Yeah, plus we have the xattr and attrib events which need dentry to lookup
parent. So scratch this idea.

								Honza
-- 
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux