All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lennart Poettering <mzxreary@0pointer.de>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Karel Zak <kzak@redhat.com>,
	Christian Brauner <christian.brauner@ubuntu.com>,
	David Howells <dhowells@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	dray@redhat.com, Miklos Szeredi <mszeredi@redhat.com>,
	Steven Whitehouse <swhiteho@redhat.com>,
	Jeff Layton <jlayton@redhat.com>, Ian Kent <raven@themaw.net>,
	andres@anarazel.de, keyrings@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	Aleksa Sarai <cyphar@cyphar.com>
Subject: Re: Upcoming: Notifications, FS notifications and fsinfo()
Date: Tue, 31 Mar 2020 12:25:54 +0000	[thread overview]
Message-ID: <20200331122554.GA27469@gardel-login> (raw)
In-Reply-To: <CAJfpegsNpabFwoLL8HffNbi_4DuGMn4eYpFc6n7223UFnEPAbA@mail.gmail.com>

On Di, 31.03.20 10:56, Miklos Szeredi (miklos@szeredi.hu) wrote:

> On Tue, Mar 31, 2020 at 10:34 AM Karel Zak <kzak@redhat.com> wrote:
> >
> > On Tue, Mar 31, 2020 at 07:11:11AM +0200, Miklos Szeredi wrote:
> > > On Mon, Mar 30, 2020 at 11:17 PM Christian Brauner
> > > <christian.brauner@ubuntu.com> wrote:
> > >
> > > > 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,
> > >
> > > fsinfo(2) doesn't meet the atomically all-at-once requirement.
> >
> > I guess your /proc based idea have exactly the same problem...
>
> Yes, that's exactly what I wanted to demonstrate: there's no
> fundamental difference between the two API's in this respect.
>
> > I see two possible ways:
> >
> > - after open("/mnt", O_PATH) create copy-on-write object in kernel to
> >   represent mount node -- kernel will able to modify it, but userspace
> >   will get unchanged data from the FD until to close()
> >
> > - improve fsinfo() to provide set (list) of the attributes by one call
>
> I think we are approaching this from the wrong end.   Let's just
> ignore all of the proposed interfaces for now and only concentrate on
> what this will be used for.
>
> Start with a set of use cases by all interested parties.  E.g.
>
>  - systemd wants to keep track attached mounts in a namespace, as well
> as new detached mounts created by fsmount()
>
>  - systemd need to keep information (such as parent, children, mount
> flags, fs options, etc) up to date on any change of topology or
> attributes.

- We also have code that recursively remounts r/o or unmounts some
  directory tree (with filters), which is currently nasty to do since
  the relationships between dirs are not always clear from
  /proc/self/mountinfo alone, in particular not in an even remotely
  atomic fashion, or when stuff is overmounted.

- We also have code that needs to check if /dev/ is plain tmpfs or
  devtmpfs. We cannot use statfs for that, since in both cases
  TMPFS_MAGIC is reported, hence we currently parse
  /proc/self/mountinfo for that to find the fstype string there, which
  is different for both cases.

Lennart

--
Lennart Poettering, Berlin

WARNING: multiple messages have this Message-ID (diff)
From: Lennart Poettering <mzxreary@0pointer.de>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Karel Zak <kzak@redhat.com>,
	Christian Brauner <christian.brauner@ubuntu.com>,
	David Howells <dhowells@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	dray@redhat.com, Miklos Szeredi <mszeredi@redhat.com>,
	Steven Whitehouse <swhiteho@redhat.com>,
	Jeff Layton <jlayton@redhat.com>, Ian Kent <raven@themaw.net>,
	andres@anarazel.de, keyrings@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	Aleksa Sarai <cyphar@cyphar.com>
Subject: Re: Upcoming: Notifications, FS notifications and fsinfo()
Date: Tue, 31 Mar 2020 14:25:54 +0200	[thread overview]
Message-ID: <20200331122554.GA27469@gardel-login> (raw)
In-Reply-To: <CAJfpegsNpabFwoLL8HffNbi_4DuGMn4eYpFc6n7223UFnEPAbA@mail.gmail.com>

On Di, 31.03.20 10:56, Miklos Szeredi (miklos@szeredi.hu) wrote:

> On Tue, Mar 31, 2020 at 10:34 AM Karel Zak <kzak@redhat.com> wrote:
> >
> > On Tue, Mar 31, 2020 at 07:11:11AM +0200, Miklos Szeredi wrote:
> > > On Mon, Mar 30, 2020 at 11:17 PM Christian Brauner
> > > <christian.brauner@ubuntu.com> wrote:
> > >
> > > > 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,
> > >
> > > fsinfo(2) doesn't meet the atomically all-at-once requirement.
> >
> > I guess your /proc based idea have exactly the same problem...
>
> Yes, that's exactly what I wanted to demonstrate: there's no
> fundamental difference between the two API's in this respect.
>
> > I see two possible ways:
> >
> > - after open("/mnt", O_PATH) create copy-on-write object in kernel to
> >   represent mount node -- kernel will able to modify it, but userspace
> >   will get unchanged data from the FD until to close()
> >
> > - improve fsinfo() to provide set (list) of the attributes by one call
>
> I think we are approaching this from the wrong end.   Let's just
> ignore all of the proposed interfaces for now and only concentrate on
> what this will be used for.
>
> Start with a set of use cases by all interested parties.  E.g.
>
>  - systemd wants to keep track attached mounts in a namespace, as well
> as new detached mounts created by fsmount()
>
>  - systemd need to keep information (such as parent, children, mount
> flags, fs options, etc) up to date on any change of topology or
> attributes.

- We also have code that recursively remounts r/o or unmounts some
  directory tree (with filters), which is currently nasty to do since
  the relationships between dirs are not always clear from
  /proc/self/mountinfo alone, in particular not in an even remotely
  atomic fashion, or when stuff is overmounted.

- We also have code that needs to check if /dev/ is plain tmpfs or
  devtmpfs. We cannot use statfs for that, since in both cases
  TMPFS_MAGIC is reported, hence we currently parse
  /proc/self/mountinfo for that to find the fstype string there, which
  is different for both cases.

Lennart

--
Lennart Poettering, Berlin

  parent reply	other threads:[~2020-03-31 12:25 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
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 [this message]
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=20200331122554.GA27469@gardel-login \
    --to=mzxreary@0pointer.de \
    --cc=andres@anarazel.de \
    --cc=christian.brauner@ubuntu.com \
    --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=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --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.