Re: [PATCH 3/3] fsnotify: use the new open-exec hook for inotifyand dnotify

From: Eric Paris
Date: Mon Dec 15 2008 - 20:53:06 EST


On Tue, 2008-12-16 at 10:12 +0900, KOSAKI Motohiro wrote:
> > diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h
> > index 88265dd..a7122c6 100644
> > --- a/include/linux/fsnotify.h
> > +++ b/include/linux/fsnotify.h
> > @@ -170,6 +170,12 @@ static inline void fsnotify_modify(struct dentry *dentry)
> > */
> > static inline void fsnotify_open_exec(struct file *file)
> > {
> > + struct dentry *dentry = file->f_path.dentry;
> > + struct inode *inode = dentry->d_inode;
> > +
> > + dnotify_parent(dentry, DN_ACCESS);
> > + inotify_dentry_parent_queue_event(dentry, IN_ACCESS, 0, dentry->d_name.name);
> > + inotify_inode_queue_event(inode, IN_ACCESS, 0, NULL, NULL);
> > }
>
> Current fsnotify_open() has following code
>
> static inline void fsnotify_open(struct dentry *dentry)
> {
> struct inode *inode = dentry->d_inode;
> u32 mask = IN_OPEN;
>
> if (S_ISDIR(inode->i_mode))
> mask |= IN_ISDIR;
>
> inotify_dentry_parent_queue_event(dentry, mask, 0, dentry->d_name.name);
> inotify_inode_queue_event(inode, mask, 0, NULL, NULL);
> }
>
> they are two different.
>
> 1) Call dnotify_parent() or not
> 2) Use IN_OPEN or IN_ACCESS
>
> The patch description doesn't explain any reason.
>
>
> IOW, IN_ACCESS is usually used by read(). but linux has demand paging
> mechanism. then exec() only do open and mmap.
> actual reading is processed by page fault.
>
> I guess you have the reason of this design choice.
> but it isn't described.

The original logic was all predicated on my thoughts on how my new
fanotify would want these events and how I felt that open for exec was
worth the separate hook. None of that is useful at this time and in any
case IN_OPEN makes a lot more sense than IN_ACCESS. Since you've got me
looking at these as freestanding patchs I do tend to think that the
easiest thing for now would be to just drop patch 2 and make the call
sites from patch 2 call fsnotify_open directly.

I'll resend in the morning a single patch to call directly to
fsnotify_open. (and another single patch to immediately do the rename
that I want done which I'll send as the full normal diff since it'll be
freestanding)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/