All of lore.kernel.org
 help / color / mirror / Atom feed
From: Amir Goldstein <amir73il@gmail.com>
To: Al Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <christian.brauner@ubuntu.com>,
	Miklos Szeredi <miklos@szeredi.hu>
Cc: Jan Kara <jack@suse.cz>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	"J. Bruce Fields" <bfields@fieldses.org>
Subject: Re: fsnotify path hooks
Date: Tue, 20 Apr 2021 10:53:57 +0300	[thread overview]
Message-ID: <CAOQ4uxiWb5Auyrbrj44hvdMcvMhx1YPRrR90RkicntmyfF+Ugw@mail.gmail.com> (raw)
In-Reply-To: <CAOQ4uxhXXLwUBr01zuU=Uo9rzEg4JQ2w_zEejdRRU8FSJsJg0w@mail.gmail.com>

> > I really want to see details on all callers - which mount are
> > you going to use in each case.
>
> The callers are:
> cachefiles, ecryptfs, nfsd, devtmpfs,
> do_truncate(), vfs_utimes() and file_remove_privs()
>
> * cachefiles, ecryptfs, nfsd compose paths from stashed
> mount like this all the time (e.g. for vfs_truncate(), vf_getattr()).
>
> * devtmpfs has the parent path from and also uses it to
> compose child path for vfs_getattr().
>
> * vfs_utimes() and all callers of do_truncate() already have the
> path, just need to pass it through to notify_change()
>

Not sure how I forgot to mention chmod and chown, but obviously
there is no problem with path from those callers.

> >
> >         The thing that is not going to be acceptable is
> > a combination of mount from one filesystem and dentry from
> > another.  In particular, file_remove_privs() is going to be
> > interesting.
> >
> >         Note, BTW, that ftruncate() and file_remove_privs()
> > are different in that respect - the latter hits d_real()
> > (by way of file_dentry()), the former does not.  Which one
> > is correct and if both are, why are their needs different?
>
> Nowadays (>= v4.19) I think the only files whose file_inode() and
> f_path do not agree are the overlayfs "real.file" that can find their
> way to f_mapping and to some vfs helpers and from there to
> filesystem ops and to file_modified() or generic_file_write_iter()
> and to file_remove_privs().
>
> Contrary to that, overlayfs does not call any vfs truncate()
> helper, it calls notify_change() directly (with a composed path).
>
> So what should we do about file_remove_privs()?
> Since I don't think we really need to care about generating an
> event on file_remove_privs(), perhaps it could call __notify_change()
> that does not generate an event

I found more instances of notify_change() in overlayfs copy_up code
that IMO should also use __notify_change() and not report fsnotify
events for restoring attributes on files post copy up.

Like with the case of file_remove_privs(), it is enough IMO that the
listener is able to get an event on the modification event that caused
copy up or remove_privs, no need for an event on the subsystem
internal implementation details.

> and the rest of the callers call this wrapper:
>
> int notify_change(struct path *path, struct iattr *attr,
>                             struct inode **delegated_inode)
> {
>         unsigned int ia_valid;
>         int error = __notify_change(mnt_user_ns(path->mnt), path->dentry,
>                                                     attr, &ia_valid,

Braino here. There is no need to pass ia_valid to helper.
I failed to notice that notify_change updates attr->ia_valid.

Which brings me to the fun question - naming.

Would you like me to follow up on Jan's suggestion to rename:
s/__notify_change/vfs_setattr
s/notify_change/vfs_setattr_notify

I pushed this version (a.k.a. "tollerabe") to:
https://github.com/amir73il/linux/commits/fsnotify_path_hooks

It's only sanity tested.

Thanks,
Amir.

  reply	other threads:[~2021-04-20  7:54 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-28 15:56 [RFC][PATCH] fanotify: allow setting FAN_CREATE in mount mark mask Amir Goldstein
2021-03-30  7:31 ` Christian Brauner
2021-03-30  9:31   ` Amir Goldstein
2021-03-30 16:24     ` Amir Goldstein
2021-03-31 10:08       ` Christian Brauner
2021-03-31 10:57         ` Amir Goldstein
2021-04-08 11:44         ` open_by_handle_at() in userns Amir Goldstein
2021-04-08 12:55           ` Christian Brauner
2021-04-08 14:15             ` J. Bruce Fields
2021-04-08 15:54               ` Amir Goldstein
2021-04-08 16:08                 ` J. Bruce Fields
2021-04-08 16:48                   ` Frank Filz
2021-04-08 15:34             ` Amir Goldstein
2021-04-08 15:41               ` Christian Brauner
2021-03-30 12:12 ` [RFC][PATCH] fanotify: allow setting FAN_CREATE in mount mark mask Christian Brauner
2021-03-30 12:33   ` Amir Goldstein
2021-03-30 12:53     ` Christian Brauner
2021-03-30 12:55       ` Christian Brauner
2021-03-30 13:54       ` Amir Goldstein
2021-03-30 14:17         ` Christian Brauner
2021-03-30 14:56           ` Amir Goldstein
2021-03-31  9:46             ` Christian Brauner
2021-03-31 11:29               ` Amir Goldstein
2021-03-31 12:17                 ` Christian Brauner
2021-03-31 12:59                   ` Amir Goldstein
2021-03-31 12:54                 ` Jan Kara
2021-03-31 14:06                   ` Amir Goldstein
2021-03-31 20:59                     ` fsnotify path hooks Amir Goldstein
2021-04-01 10:29                       ` Jan Kara
2021-04-01 14:18                         ` Amir Goldstein
2021-04-02  8:20                           ` Amir Goldstein
2021-04-04 10:27                             ` LSM and setxattr helpers Amir Goldstein
2021-04-05 12:23                               ` Christian Brauner
2021-04-05 14:47                               ` Mimi Zohar
2021-04-06 15:43                                 ` Amir Goldstein
2021-04-05 16:18                               ` Casey Schaufler
2021-04-06  8:35                           ` fsnotify path hooks Jan Kara
2021-04-06 18:49                           ` Amir Goldstein
2021-04-08 12:52                             ` Jan Kara
2021-04-08 15:11                               ` Amir Goldstein
2021-04-09 10:08                                 ` Jan Kara
2021-04-09 10:45                                   ` Christian Brauner
2021-04-20  6:01                                     ` Amir Goldstein
2021-04-20 11:41                                       ` Christian Brauner
2021-04-20 11:58                                         ` Amir Goldstein
2021-04-20 13:38                                         ` Christian Brauner
2021-04-09 13:22                                   ` Amir Goldstein
2021-04-09 14:30                                     ` Al Viro
2021-04-09 14:39                                       ` Christian Brauner
2021-04-09 14:46                                         ` Al Viro
2021-04-09 15:20                                           ` Christian Brauner
2021-04-09 16:06                                       ` Amir Goldstein
2021-04-09 16:09                                         ` Amir Goldstein
2021-04-18 18:51                                   ` Amir Goldstein
2021-04-19  8:08                                     ` Amir Goldstein
2021-04-19 16:41                                 ` Amir Goldstein
2021-04-19 17:02                                   ` Al Viro
2021-04-19 22:04                                     ` Amir Goldstein
2021-04-20  7:53                                       ` Amir Goldstein [this message]
2021-03-31 13:06                 ` [RFC][PATCH] fanotify: allow setting FAN_CREATE in mount mark mask J. Bruce Fields
2021-03-30 12:20 ` Amir Goldstein

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAOQ4uxiWb5Auyrbrj44hvdMcvMhx1YPRrR90RkicntmyfF+Ugw@mail.gmail.com \
    --to=amir73il@gmail.com \
    --cc=bfields@fieldses.org \
    --cc=christian.brauner@ubuntu.com \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.