From: Al Viro <viro@zeniv.linux.org.uk>
To: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
Cc: Ian Kent <raven@themaw.net>, Matthew Wilcox <willy@infradead.org>,
Pavel Tikhomirov <ptikhomirov@virtuozzo.com>,
Kirill Tkhai <ktkhai@virtuozzo.com>,
autofs@vger.kernel.org, linux-kernel@vger.kernel.org,
Miklos Szeredi <mszeredi@redhat.com>,
Christian Brauner <christian.brauner@ubuntu.com>,
Ross Zwisler <zwisler@google.com>,
Aleksa Sarai <cyphar@cyphar.com>,
Eric Biggers <ebiggers@google.com>,
Mattias Nissler <mnissler@chromium.org>,
linux-fsdevel@vger.kernel.org, alexander@mihalicyn.com
Subject: Re: [RFC PATCH] autofs: find_autofs_mount overmounted parent support
Date: Sun, 7 Mar 2021 23:51:20 +0000 [thread overview]
Message-ID: <YEVm+KH/R5y2rU7K@zeniv-ca.linux.org.uk> (raw)
In-Reply-To: <20210304131133.0ad93dee12a17f41f4052bcb@virtuozzo.com>
On Thu, Mar 04, 2021 at 01:11:33PM +0300, Alexander Mikhalitsyn wrote:
> That problem connected with CRIU (Checkpoint-Restore in Userspace) project.
> In CRIU we have support of autofs mounts C/R. To acheive that we need to use
> ioctl's from /dev/autofs to get data about mounts, restore mount as catatonic
> (if needed), change pipe fd and so on. But the problem is that during CRIU
> dump we may meet situation when VFS subtree where autofs mount present was
> overmounted as whole.
>
> Simpliest example is /proc/sys/fs/binfmt_misc. This mount present on most
> GNU/Linux distributions by default. For instance on my Fedora 33:
>
> trigger automount of binfmt_misc
> $ ls /proc/sys/fs/binfmt_misc
>
> $ cat /proc/1/mountinfo | grep binfmt
> 35 24 0:36 / /proc/sys/fs/binfmt_misc rw,relatime shared:16 - autofs systemd-1 rw,...,direct,pipe_ino=223
> 632 35 0:56 / /proc/sys/fs/binfmt_misc rw,...,relatime shared:315 - binfmt_misc binfmt_misc rw
>
> $ sudo unshare -m -p --fork --mount-proc sh
> # cat /proc/self/mountinfo | grep "/proc"
> 828 809 0:23 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
> 829 828 0:36 / /proc/sys/fs/binfmt_misc rw,relatime - autofs systemd-1 rw,...,direct,pipe_ino=223
> 943 829 0:56 / /proc/sys/fs/binfmt_misc rw,...,relatime - binfmt_misc binfmt_misc rw
> 949 828 0:57 / /proc rw...,relatime - proc proc rw
>
> As we can see now autofs mount /proc/sys/fs/binfmt_misc is inaccessible.
> If we do something like:
>
> struct autofs_dev_ioctl *param;
> param = malloc(...);
> devfd = open("/dev/autofs", O_RDONLY);
> init_autofs_dev_ioctl(param);
> param->size = size;
> strcpy(param->path, "/proc/sys/fs/binfmt_misc");
> param->openmount.devid = 36;
> err = ioctl(devfd, AUTOFS_DEV_IOCTL_OPENMOUNT, param)
>
> now we get err = -ENOENT.
Where does that -ENOENT come from? AFAICS, pathwalk ought to succeed and
return you the root of overmounting binfmt_misc. Why doesn't the loop in
find_autofs_mount() locate anything it would accept?
I really dislike the patch - the whole "normalize path" thing is fundamentally
bogus, not to mention the iterator over all mounts, etc., so I would like to
understand what the hell is going on before even thinking of *not* NAKing
it on sight.
next prev parent reply other threads:[~2021-03-07 23:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-03 15:28 Alexander Mikhalitsyn
2021-03-04 6:54 ` Ian Kent
2021-03-04 10:11 ` Alexander Mikhalitsyn
2021-03-05 10:10 ` Ian Kent
2021-03-05 11:55 ` Alexander Mikhalitsyn
2021-03-06 9:13 ` Ian Kent
2021-03-09 10:43 ` Alexander Mikhalitsyn
2021-03-23 8:44 ` Ian Kent
2021-03-24 14:20 ` Alexander Mihalicyn
2021-03-07 23:51 ` Al Viro [this message]
2021-03-08 0:12 ` Al Viro
2021-03-08 0:28 ` Al Viro
2021-03-09 11:31 ` Alexander Mikhalitsyn
2021-03-22 7:53 ` Alexander Mikhalitsyn
2021-03-03 16:17 Alexander Mikhalitsyn
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=YEVm+KH/R5y2rU7K@zeniv-ca.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=alexander.mikhalitsyn@virtuozzo.com \
--cc=alexander@mihalicyn.com \
--cc=autofs@vger.kernel.org \
--cc=christian.brauner@ubuntu.com \
--cc=cyphar@cyphar.com \
--cc=ebiggers@google.com \
--cc=ktkhai@virtuozzo.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mnissler@chromium.org \
--cc=mszeredi@redhat.com \
--cc=ptikhomirov@virtuozzo.com \
--cc=raven@themaw.net \
--cc=willy@infradead.org \
--cc=zwisler@google.com \
/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
all inboxes | Powered by JetHome®