linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Amir Goldstein <amir73il@gmail.com>
To: Jan Kara <jack@suse.cz>
Cc: linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Al Viro <viro@zeniv.linux.org.uk>, Christoph Hellwig <hch@lst.de>,
	Joel Becker <jlbec@evilplan.org>
Subject: Re: [PATCH v2 00/14] Sort out fsnotify_nameremove() mess
Date: Thu, 16 May 2019 16:56:20 +0300	[thread overview]
Message-ID: <CAOQ4uxjiHuN7dcciucaRXvhj6g9wgz4k313NV3c_XbUrC8+sug@mail.gmail.com> (raw)
In-Reply-To: <20190516122506.GF13274@quack2.suse.cz>

On Thu, May 16, 2019 at 3:25 PM Jan Kara <jack@suse.cz> wrote:
>
> Hi,
>
> On Thu 16-05-19 13:26:27, Amir Goldstein wrote:
> > What do you think will be the best merge strategy for this patch series?
> >
> > How about sending first 3 prep patches to Linus for applying at the end
> > of v5.2 merge window, so individual maintainers can pick up per fs
> > patches for the v5.3 development cycle?
>
> I don't think we'll make it for rc1. But those three cleanup patches would
> be OK for rc2 as well. But overall patches are not very intrusive so I'm
> also OK with pushing the patches myself once we get acks from respective
> maintainers if Al will be too busy and won't react.
>
> > The following d_delete() call sites have been audited and will no longer
> > generate fsnotify event after this series:
> >
> > drivers/usb/gadget/function/f_fs.c:ffs_epfiles_destroy() - cleanup? (*)
>
> Not really but creation events are not generated either.
>
> > fs/ceph/dir.c:ceph_unlink() - from vfs_unlink()
> > fs/ceph/inode.c:ceph_fill_trace() - invalidate (**)
>
> There's one more 'invalidate' case in fs/ceph/inode.c.
>
> > fs/configfs/dir.c:detach_groups() - cleanup (*)
>
> Why is this a cleanup? detach_groups() is used also from
> configfs_detach_group() which gets called from configfs_rmdir() which is
> real deletion.

True, configfs is a special case where both cleanup and real deletion
use the same helper. configfs_detach_group() is either called for cleanup
or from vfs_rmdir->configfs_rmdir()/configfs_unregister_{group,subsystem}()
the latter 3 cases have new fsnotify hooks.

>
> > fs/configfs/dir.c:configfs_attach_item() - cleanup (*)
> > fs/configfs/dir.c:configfs_attach_group() - cleanup (*)
> > fs/efivarfs/file.c:efivarfs_file_write() - invalidate (**)
> > fs/fuse/dir.c:fuse_reverse_inval_entry() - invalidate (**)
> > fs/nfs/dir.c:nfs_dentry_handle_enoent() - invalidate (**)
> > fs/nsfs.c:__ns_get_path() - invalidate (**)
>
> More a cleanup case I'd say...
>
> > fs/ocfs2/dlmglue.c:ocfs2_dentry_convert_worker() - invalidate? (**)
>
> This is really invalidate.
>
> > fs/reiserfs/xattr.c:xattr_{unlink,rmdir}() - hidden xattr inode
> >
> > (*) There are 2 "cleanup" use cases:
> >   - Create;init;delte if init failed
> >   - Batch delete of files within dir before removing dir
> >   Both those cases are not interesting for users that wish to observe
> >   configuration changes on pseudo filesystems.  Often, there is already
> >   an fsnotify event generated on the directory removal which is what
> >   users should find interesting, for example:
> >   configfs_unregister_{group,subsystem}().
> >
> > (**) The different "invalidate" use cases differ, but they all share
> >   one thing in common - user is not guarantied to get an event with
> >   current kernel.  For example, when a file is deleted remotely on
> >   nfs server, nfs client is not guarantied to get an fsnotify delete
> >   event.  On current kernel, nfs client could generate an fsnotify
> >   delete event if the local entry happens to be in cache and client
> >   finds out that entry is deleted on server during another user
> >   operation.  Incidentally, this group of use cases is where most of
> >   the call sites are with "unstable" d_name, which is the reason for
> >   this patch series to begin with.
>
> Thanks. Maybe for other reviewers it would be more convincing to take
> sanitized output of 'git grep "[^a-z_]d_delete("' and annotate how each
> callsite is handled - i.e., "cleanup, invalidate, simple_remove, vfs,
> manual - patch X". But I'm now reasonably convinced we didn't forget
> anything :).
>
>                                                                 Honza
> --
> Jan Kara <jack@suse.com>
> SUSE Labs, CR

  reply	other threads:[~2019-05-16 13:56 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-16 10:26 [PATCH v2 00/14] Sort out fsnotify_nameremove() mess Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 01/14] ASoC: rename functions that pollute the simple_xxx namespace Amir Goldstein
2019-05-17  1:04   ` Kuninori Morimoto
2019-05-21 20:32   ` Applied "ASoC: rename functions that pollute the simple_xxx namespace" to the asoc tree Mark Brown
2019-05-16 10:26 ` [PATCH v2 02/14] fs: create simple_remove() helper Amir Goldstein
2019-05-16 15:08   ` Fwd: " Amir Goldstein
2019-05-16 17:07   ` Al Viro
2019-05-16 18:42     ` Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 03/14] fsnotify: add empty fsnotify_{unlink,rmdir}() hooks Amir Goldstein
2019-05-16 15:30   ` Fwd: " Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 04/14] fs: convert hypfs to use simple_remove() helper Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 05/14] fs: convert qibfs/ipathfs " Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 06/14] fs: convert debugfs " Amir Goldstein
2019-05-16 10:35   ` Greg Kroah-Hartman
2019-05-16 10:44     ` Amir Goldstein
2019-05-16 12:02       ` Jan Kara
2019-05-16 12:09         ` Amir Goldstein
2019-05-16 15:28           ` Greg Kroah-Hartman
2019-05-16 15:38             ` Amir Goldstein
2019-05-16 16:52               ` Greg Kroah-Hartman
2019-05-16 18:47                 ` Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 07/14] fs: convert tracefs " Amir Goldstein
2019-05-17 17:33   ` Steven Rostedt
2019-05-16 10:26 ` [PATCH v2 08/14] fs: convert rpc_pipefs " Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 09/14] fs: convert apparmorfs " Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 10/14] fsnotify: call fsnotify_rmdir() hook from btrfs Amir Goldstein
2019-05-16 11:56   ` David Sterba
2019-05-16 10:26 ` [PATCH v2 11/14] fsnotify: call fsnotify_rmdir() hook from configfs Amir Goldstein
2019-05-16 12:33   ` Christoph Hellwig
2019-05-16 13:38     ` Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 12/14] fsnotify: call fsnotify_unlink() hook from devpts Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 13/14] fsnotify: move fsnotify_nameremove() hook out of d_delete() Amir Goldstein
2019-05-16 10:26 ` [PATCH v2 14/14] fsnotify: get rid of fsnotify_nameremove() Amir Goldstein
2019-05-16 10:40 ` [PATCH v2 00/14] Sort out fsnotify_nameremove() mess Amir Goldstein
2019-05-16 12:25 ` Jan Kara
2019-05-16 13:56   ` Amir Goldstein [this message]
2019-05-16 16:17     ` Al Viro

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=CAOQ4uxjiHuN7dcciucaRXvhj6g9wgz4k313NV3c_XbUrC8+sug@mail.gmail.com \
    --to=amir73il@gmail.com \
    --cc=hch@lst.de \
    --cc=jack@suse.cz \
    --cc=jlbec@evilplan.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).