All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Brauner <christian.brauner@ubuntu.com>
To: David Howells <dhowells@redhat.com>
Cc: torvalds@linux-foundation.org, viro@zeniv.linux.org.uk,
	dray@redhat.com, kzak@redhat.com, mszeredi@redhat.com,
	swhiteho@redhat.com, jlayton@redhat.com, raven@themaw.net,
	andres@anarazel.de, keyrings@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	lennart@poettering.net, cyphar@cyphar.com
Subject: Re: Upcoming: Notifications, FS notifications and fsinfo()
Date: Mon, 30 Mar 2020 21:17:00 +0000	[thread overview]
Message-ID: <20200330211700.g7evnuvvjenq3fzm@wittgenstein> (raw)
In-Reply-To: <1445647.1585576702@warthog.procyon.org.uk>

[Cc Lennart and Aleksa, both of which maintain projects too that would
make use of this]

On Mon, Mar 30, 2020 at 02:58:22PM +0100, David Howells wrote:
> 
> Hi Linus,
> 
> I have three sets of patches I'd like to push your way, if you (and Al) are
> willing to consider them.
> 
>  (1) General notification queue plus key/keyring notifications.
> 
>      This adds the core of the notification queue built on pipes, and adds
>      the ability to watch for changes to keys.
> 
>  (2) Mount and superblock notifications.
> 
>      This builds on (1) to provide notifications of mount topology changes
>      and implements a framework for superblock events (configuration
>      changes, I/O errors, quota/space overruns and network status changes).
> 
>  (3) Filesystem information retrieval.
> 
>      This provides an extensible way to retrieve informational attributes
>      about mount objects and filesystems.  This includes providing
>      information intended to make recovering from a notification queue
>      overrun much easier.
> 
> We need (1) for Gnome to efficiently watch for changes in kerberos
> keyrings.  Debarshi Ray has patches ready to go for gnome-online-accounts
> so that it can make use of the facility.
> 
> Sets (2) and (3) can make libmount more efficient.  Karel Zak is working on
> making use of this to avoid reading /proc/mountinfo.
> 
> We need something to make systemd's watching of the mount topology more
> efficient, and (2) and (3) can help with this by making it faster to narrow
> down what changed.  I think Karel has this in his sights, but hasn't yet
> managed to work on it.
> 
> Set (2) should be able to make it easier to watch for mount options inside
> a container, and set (3) should make it easier to examine the mounts inside
> another mount namespace inside a container in a way that can't be done with
> /proc/mounts.  This is requested by Christian Brauner.
> 
> Jeff Layton has a tentative addition to (3) to expose error state to
> userspace, and Andres Freund would like this for Postgres.
> 
> Set (3) further allows the information returned by such as statx() and
> ioctl(FS_IOC_GETFLAGS) to be qualified by indicating which bits are/aren't
> supported.
> 
> Further, for (3), I also allow filesystem-specific overrides/extensions to
> fsinfo() and have a use for it to AFS to expose information about server
> preference for a particular volume (something that is necessary for
> implementing the toolset).  I've provided example code that does similar
> for NFS and some that exposes superblock info from Ext4.  At Vault, Steve
> expressed an interest in this for CIFS and Ted Ts'o expressed a possible
> interest for Ext4.
> 
> Notes:
> 
>  (*) These patches will conflict with apparently upcoming refactoring of
>      the security core, but the fixup doesn't look too bad:
> 
> 	https://lore.kernel.org/linux-next/20200330130636.0846e394@canb.auug.org.au/T/#u
> 
>  (*) Miklós Szeredi would much prefer to implement fsinfo() as a magic
>      filesystem mounted on /proc/self/fsinfo/ whereby your open fds appear
>      as directories under there, each with a set of attribute files
>      corresponding to the attributes that fsinfo() would otherwise provide.
>      To examine something by filename, you'd have to open it O_PATH and
>      then read the individual attribute files in the corresponding per-fd
>      directory.  A readfile() system call has been mooted to elide the
>      {open,read,close} sequence to make it more efficient.

Fwiw, putting down my kernel hat and speaking as someone who maintains
two container runtimes and various other low-level bits and pieces in
userspace who'd make heavy use of this stuff I would prefer the fd-based
fsinfo() approach especially in the light of across namespace
operations, querying all properties of a mount atomically all-at-once,
and safe delegation through fds. Another heavy user of this would be
systemd (Cced Lennart who I've discussed this with) which would prefer
the fd-based approach as well. I think pulling this into a filesystem
and making userspace parse around in a filesystem tree to query mount
information is the wrong approach and will get messy pretty quickly
especially in the face of mount and user namespace interactions and
various other pitfalls. fsinfo() fits quite nicely with the all-fd-based
approach of the whole mount api. So yes, definitely preferred from my
end.

Christian

WARNING: multiple messages have this Message-ID (diff)
From: Christian Brauner <christian.brauner@ubuntu.com>
To: David Howells <dhowells@redhat.com>
Cc: torvalds@linux-foundation.org, viro@zeniv.linux.org.uk,
	dray@redhat.com, kzak@redhat.com, mszeredi@redhat.com,
	swhiteho@redhat.com, jlayton@redhat.com, raven@themaw.net,
	andres@anarazel.de, keyrings@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	lennart@poettering.net, cyphar@cyphar.com
Subject: Re: Upcoming: Notifications, FS notifications and fsinfo()
Date: Mon, 30 Mar 2020 23:17:00 +0200	[thread overview]
Message-ID: <20200330211700.g7evnuvvjenq3fzm@wittgenstein> (raw)
In-Reply-To: <1445647.1585576702@warthog.procyon.org.uk>

[Cc Lennart and Aleksa, both of which maintain projects too that would
make use of this]

On Mon, Mar 30, 2020 at 02:58:22PM +0100, David Howells wrote:
> 
> Hi Linus,
> 
> I have three sets of patches I'd like to push your way, if you (and Al) are
> willing to consider them.
> 
>  (1) General notification queue plus key/keyring notifications.
> 
>      This adds the core of the notification queue built on pipes, and adds
>      the ability to watch for changes to keys.
> 
>  (2) Mount and superblock notifications.
> 
>      This builds on (1) to provide notifications of mount topology changes
>      and implements a framework for superblock events (configuration
>      changes, I/O errors, quota/space overruns and network status changes).
> 
>  (3) Filesystem information retrieval.
> 
>      This provides an extensible way to retrieve informational attributes
>      about mount objects and filesystems.  This includes providing
>      information intended to make recovering from a notification queue
>      overrun much easier.
> 
> We need (1) for Gnome to efficiently watch for changes in kerberos
> keyrings.  Debarshi Ray has patches ready to go for gnome-online-accounts
> so that it can make use of the facility.
> 
> Sets (2) and (3) can make libmount more efficient.  Karel Zak is working on
> making use of this to avoid reading /proc/mountinfo.
> 
> We need something to make systemd's watching of the mount topology more
> efficient, and (2) and (3) can help with this by making it faster to narrow
> down what changed.  I think Karel has this in his sights, but hasn't yet
> managed to work on it.
> 
> Set (2) should be able to make it easier to watch for mount options inside
> a container, and set (3) should make it easier to examine the mounts inside
> another mount namespace inside a container in a way that can't be done with
> /proc/mounts.  This is requested by Christian Brauner.
> 
> Jeff Layton has a tentative addition to (3) to expose error state to
> userspace, and Andres Freund would like this for Postgres.
> 
> Set (3) further allows the information returned by such as statx() and
> ioctl(FS_IOC_GETFLAGS) to be qualified by indicating which bits are/aren't
> supported.
> 
> Further, for (3), I also allow filesystem-specific overrides/extensions to
> fsinfo() and have a use for it to AFS to expose information about server
> preference for a particular volume (something that is necessary for
> implementing the toolset).  I've provided example code that does similar
> for NFS and some that exposes superblock info from Ext4.  At Vault, Steve
> expressed an interest in this for CIFS and Ted Ts'o expressed a possible
> interest for Ext4.
> 
> Notes:
> 
>  (*) These patches will conflict with apparently upcoming refactoring of
>      the security core, but the fixup doesn't look too bad:
> 
> 	https://lore.kernel.org/linux-next/20200330130636.0846e394@canb.auug.org.au/T/#u
> 
>  (*) Miklós Szeredi would much prefer to implement fsinfo() as a magic
>      filesystem mounted on /proc/self/fsinfo/ whereby your open fds appear
>      as directories under there, each with a set of attribute files
>      corresponding to the attributes that fsinfo() would otherwise provide.
>      To examine something by filename, you'd have to open it O_PATH and
>      then read the individual attribute files in the corresponding per-fd
>      directory.  A readfile() system call has been mooted to elide the
>      {open,read,close} sequence to make it more efficient.

Fwiw, putting down my kernel hat and speaking as someone who maintains
two container runtimes and various other low-level bits and pieces in
userspace who'd make heavy use of this stuff I would prefer the fd-based
fsinfo() approach especially in the light of across namespace
operations, querying all properties of a mount atomically all-at-once,
and safe delegation through fds. Another heavy user of this would be
systemd (Cced Lennart who I've discussed this with) which would prefer
the fd-based approach as well. I think pulling this into a filesystem
and making userspace parse around in a filesystem tree to query mount
information is the wrong approach and will get messy pretty quickly
especially in the face of mount and user namespace interactions and
various other pitfalls. fsinfo() fits quite nicely with the all-fd-based
approach of the whole mount api. So yes, definitely preferred from my
end.

Christian

  parent reply	other threads:[~2020-03-30 21:17 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-30 13:58 Upcoming: Notifications, FS notifications and fsinfo() David Howells
2020-03-30 13:58 ` David Howells
2020-03-30 14:31 ` [GIT PULL] General notification queue and key notifications David Howells
2020-03-30 14:31   ` David Howells
2020-03-31  6:51   ` Stephen Rothwell
2020-03-31  6:51     ` Stephen Rothwell
2020-06-02 15:55   ` David Howells
2020-06-02 15:55     ` David Howells
2020-06-03  2:15     ` Ian Kent
2020-06-03  2:15       ` Ian Kent
2020-06-08  0:49       ` Ian Kent
2020-06-08  0:49         ` Ian Kent
2020-06-10  9:56     ` Christian Brauner
2020-06-10  9:56       ` Christian Brauner
2020-06-10 11:12     ` Karel Zak
2020-06-10 11:12       ` Karel Zak
2020-06-12 21:32       ` Linus Torvalds
2020-06-12 21:32         ` Linus Torvalds
2020-06-12 22:01       ` Linus Torvalds
2020-06-12 22:01         ` Linus Torvalds
2020-06-13 13:04       ` David Howells
2020-06-13 13:04         ` David Howells
2020-06-13 16:47         ` Linus Torvalds
2020-06-13 16:47           ` Linus Torvalds
2020-06-13 17:03           ` Linus Torvalds
2020-06-13 17:03             ` Linus Torvalds
2020-06-13 19:22         ` Miklos Szeredi
2020-06-13 19:22           ` Miklos Szeredi
2020-06-13 13:24       ` David Howells
2020-06-13 13:24         ` David Howells
2020-06-13 18:00     ` pr-tracker-bot
2020-06-13 18:00       ` pr-tracker-bot
2020-06-17  1:15     ` Williams, Dan J
2020-06-17  1:15       ` Williams, Dan J
2020-06-17  1:15       ` Williams, Dan J
2020-06-23 23:38       ` Dan Williams
2020-06-23 23:38         ` Dan Williams
2020-06-23 23:38         ` Dan Williams
2020-06-24  0:55       ` David Howells
2020-06-24  0:55         ` David Howells
2020-06-24  0:55         ` David Howells
2020-06-24  1:03         ` Dan Williams
2020-06-24  1:03           ` Dan Williams
2020-06-24  1:03           ` Dan Williams
2020-06-24  1:17         ` David Howells
2020-06-24  1:17           ` David Howells
2020-06-24  1:17           ` David Howells
2020-03-30 14:36 ` [GIT PULL] Mount and superblock notifications David Howells
2020-03-30 14:36   ` David Howells
2020-04-04 21:13   ` Linus Torvalds
2020-04-04 21:13     ` Linus Torvalds
2020-04-05 22:52     ` Andres Freund
2020-04-05 22:52       ` Andres Freund
2020-03-30 14:43 ` [GIT PULL] fsinfo: Filesystem information query David Howells
2020-03-30 14:43   ` David Howells
2020-03-30 20:28 ` Upcoming: Notifications, FS notifications and fsinfo() Miklos Szeredi
2020-03-30 20:28   ` Miklos Szeredi
2020-03-31  9:21   ` Karel Zak
2020-03-31  9:21     ` Karel Zak
2020-03-30 21:17 ` Christian Brauner [this message]
2020-03-30 21:17   ` Christian Brauner
2020-03-31  5:11   ` Miklos Szeredi
2020-03-31  5:11     ` Miklos Szeredi
2020-03-31  8:15     ` Christian Brauner
2020-03-31  8:15       ` Christian Brauner
2020-03-31  8:34       ` Miklos Szeredi
2020-03-31  8:34         ` Miklos Szeredi
2020-03-31  8:34     ` Karel Zak
2020-03-31  8:34       ` Karel Zak
2020-03-31  8:56       ` Miklos Szeredi
2020-03-31  8:56         ` Miklos Szeredi
2020-03-31  9:49         ` Karel Zak
2020-03-31  9:49           ` Karel Zak
2020-03-31 12:25         ` Lennart Poettering
2020-03-31 12:25           ` Lennart Poettering
2020-03-31 15:10           ` Miklos Szeredi
2020-03-31 15:10             ` Miklos Szeredi
2020-03-31 15:24             ` Lennart Poettering
2020-03-31 15:24               ` Lennart Poettering
2020-03-31 21:56         ` David Howells
2020-03-31 21:56           ` David Howells
2020-03-31 21:54     ` David Howells
2020-03-31 21:54       ` David Howells
2020-04-01  8:43       ` Karel Zak
2020-04-01  8:43         ` Karel Zak
2020-03-31  7:22   ` Lennart Poettering
2020-03-31  7:22     ` Lennart Poettering
2020-03-31 17:31 ` David Howells
2020-03-31 17:31   ` David Howells
2020-03-31 19:42   ` Miklos Szeredi
2020-03-31 19:42     ` Miklos Szeredi
2020-03-31 19:47   ` David Howells
2020-03-31 19:47     ` David Howells
2020-03-31 21:14   ` David Howells
2020-03-31 21:14     ` David Howells
2020-03-31 21:23   ` David Howells
2020-03-31 21:23     ` David Howells
2020-03-31 21:52 ` David Howells
2020-03-31 21:52   ` David Howells
2020-04-01  9:04   ` Karel Zak
2020-04-01  9:04     ` Karel Zak
2020-04-01 13:34     ` Miklos Szeredi
2020-04-01 13:34       ` Miklos Szeredi
2020-04-01 13:55     ` David Howells
2020-04-01 13:55       ` David Howells
2020-04-01 13:58     ` David Howells
2020-04-01 13:58       ` David Howells
2020-04-01 15:25       ` Miklos Szeredi
2020-04-01 15:25         ` Miklos Szeredi
2020-04-03  9:11         ` Karel Zak
2020-04-03  9:11           ` Karel Zak
2020-04-01 16:01       ` David Howells
2020-04-01 16:01         ` David Howells
2020-04-01 16:30         ` Miklos Szeredi
2020-04-01 16:30           ` Miklos Szeredi
2020-04-02 15:22         ` David Howells
2020-04-02 15:22           ` David Howells
2020-04-02 15:24           ` Miklos Szeredi
2020-04-02 15:24             ` Miklos Szeredi
2020-04-02 15:42           ` David Howells
2020-04-02 15:42             ` David Howells
2020-04-02 15:24         ` David Howells
2020-04-02 15:24           ` David Howells
2020-04-01 14:41   ` Lennart Poettering
2020-04-01 14:41     ` Lennart Poettering
2020-04-01 15:33     ` Miklos Szeredi
2020-04-01 15:33       ` Miklos Szeredi
2020-04-01 16:06     ` David Howells
2020-04-01 16:06       ` David Howells
2020-04-01 16:40       ` Miklos Szeredi
2020-04-01 16:40         ` Miklos Szeredi
2020-04-02  2:52         ` Ian Kent
2020-04-02  2:52           ` Ian Kent
2020-04-02 13:52           ` Miklos Szeredi
2020-04-02 13:52             ` Miklos Szeredi
2020-04-02 14:36             ` Lennart Poettering
2020-04-02 14:36               ` Lennart Poettering
2020-04-02 15:22               ` Miklos Szeredi
2020-04-02 15:22                 ` Miklos Szeredi
2020-04-02 15:28                 ` Lennart Poettering
2020-04-02 15:28                   ` Lennart Poettering
2020-04-02 15:35                   ` Miklos Szeredi
2020-04-02 15:35                     ` Miklos Szeredi
2020-04-02 15:50                     ` Lennart Poettering
2020-04-02 15:50                       ` Lennart Poettering
2020-04-02 17:20                       ` Miklos Szeredi
2020-04-02 17:20                         ` Miklos Szeredi
2020-04-03 11:08                         ` Lennart Poettering
2020-04-03 11:08                           ` Lennart Poettering
2020-04-03 11:48                           ` Miklos Szeredi
2020-04-03 11:48                             ` Miklos Szeredi
2020-04-03 15:01                             ` Lennart Poettering
2020-04-03 15:01                               ` Lennart Poettering
2020-04-06  9:22                               ` Miklos Szeredi
2020-04-06  9:22                                 ` Miklos Szeredi
2020-04-06 17:29                                 ` Lennart Poettering
2020-04-06 17:29                                   ` Lennart Poettering
2020-04-07  2:21                                   ` Ian Kent
2020-04-07  2:21                                     ` Ian Kent
2020-04-07 13:59                                     ` Miklos Szeredi
2020-04-07 13:59                                       ` Miklos Szeredi
2020-04-07 15:53                                       ` Lennart Poettering
2020-04-07 15:53                                         ` Lennart Poettering
2020-04-07 16:06                                         ` Miklos Szeredi
2020-04-07 16:06                                           ` Miklos Szeredi
2020-04-02 15:51                 ` David Howells
2020-04-02 15:51                   ` David Howells
2020-04-02 15:56                 ` David Howells
2020-04-02 15:56                   ` David Howells
2020-04-03  1:44             ` Ian Kent
2020-04-03  1:44               ` Ian Kent
2020-04-03 11:11               ` Lennart Poettering
2020-04-03 11:11                 ` Lennart Poettering
2020-04-03 11:38                 ` Miklos Szeredi
2020-04-03 11:38                   ` Miklos Szeredi
2020-04-03 12:05                   ` Richard Weinberger
2020-04-03 12:05                     ` Richard Weinberger
2020-04-03 15:12                   ` Lennart Poettering
2020-04-03 15:12                     ` Lennart Poettering
2020-04-03 20:30                     ` J. Bruce Fields
2020-04-03 20:30                       ` J. Bruce Fields
2020-04-06  8:35                       ` Miklos Szeredi
2020-04-06  8:35                         ` Miklos Szeredi
2020-04-06 16:07                         ` J. Bruce Fields
2020-04-06 16:07                           ` J. Bruce Fields
2020-04-06  9:17                       ` Karel Zak
2020-04-06  9:17                         ` Karel Zak
2020-04-06 16:34                         ` Linus Torvalds
2020-04-06 16:34                           ` Linus Torvalds
2020-04-06 18:46                           ` J. Bruce Fields
2020-04-06 18:46                             ` J. Bruce Fields
2020-04-06 18:48                           ` Lennart Poettering
2020-04-06 18:48                             ` Lennart Poettering
2020-04-08  3:36                             ` Linus Torvalds
2020-04-08  3:36                               ` Linus Torvalds
2020-04-03 15:36                   ` David Howells
2020-04-03 15:36                     ` David Howells
2020-04-03 15:41                     ` Lennart Poettering
2020-04-03 15:41                       ` Lennart Poettering

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=20200330211700.g7evnuvvjenq3fzm@wittgenstein \
    --to=christian.brauner@ubuntu.com \
    --cc=andres@anarazel.de \
    --cc=cyphar@cyphar.com \
    --cc=dhowells@redhat.com \
    --cc=dray@redhat.com \
    --cc=jlayton@redhat.com \
    --cc=keyrings@vger.kernel.org \
    --cc=kzak@redhat.com \
    --cc=lennart@poettering.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mszeredi@redhat.com \
    --cc=raven@themaw.net \
    --cc=swhiteho@redhat.com \
    --cc=torvalds@linux-foundation.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 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.