From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Max Reitz <mreitz@redhat.com>
Cc: virtio-fs@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Virtio-fs] [PATCH for-5.2] virtiofsd: Announce submounts even without statx()
Date: Thu, 12 Nov 2020 15:41:42 +0000 [thread overview]
Message-ID: <20201112154142.GG13424@work-vm> (raw)
In-Reply-To: <20201103164135.169325-1-mreitz@redhat.com>
* Max Reitz (mreitz@redhat.com) wrote:
> Contrary to what the check (and warning) in lo_init() claims, we can
> announce submounts just fine even without statx() -- the check is based
> on comparing both the mount ID and st_dev of parent and child. Without
> statx(), we will not have the mount ID; but we always have st_dev.
>
> The only problems we have (without statx() and its mount ID) are:
>
> (1) Mounting the same device twice may lead to both trees being treated
> as exactly the same tree by virtiofsd. But that is a problem that
> is completely independent of mirroring host submounts in the guest.
> Both submount roots will still show the FUSE_SUBMOUNT flag, because
> their st_dev still differs from their respective parent.
>
> (2) There is only one exception to (1), and that is if you mount a
> device inside a mount of itself: Then, its st_dev will be the same
> as that of its parent, and so without a mount ID, virtiofsd will not
> be able to recognize the nested mount's root as a submount.
> However, thanks to virtiofsd then treating both trees as exactly the
> same tree, it will be caught up in a loop when the guest tries to
> examine the nested submount, so the guest will always see nothing
> but an ELOOP there. Therefore, this case is just fully broken
> without statx(), whether we check for submounts (based on st_dev) or
> not.
>
> All in all, checking for submounts works well even without comparing the
> mount ID (i.e., without statx()). The only concern is an edge case
> that, without statx() mount IDs, is utterly broken anyway.
>
> Thus, drop said check in lo_init().
>
> Reported-by: Miklos Szeredi <mszeredi@redhat.com>
> Signed-off-by: Max Reitz <mreitz@redhat.com>
Queued
> ---
> tools/virtiofsd/passthrough_ll.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
> index ec1008bceb..6c64b03f1a 100644
> --- a/tools/virtiofsd/passthrough_ll.c
> +++ b/tools/virtiofsd/passthrough_ll.c
> @@ -610,14 +610,6 @@ static void lo_init(void *userdata, struct fuse_conn_info *conn)
> "does not support it\n");
> lo->announce_submounts = false;
> }
> -
> -#ifndef CONFIG_STATX
> - if (lo->announce_submounts) {
> - fuse_log(FUSE_LOG_WARNING, "lo_init: Cannot announce submounts, there "
> - "is no statx()\n");
> - lo->announce_submounts = false;
> - }
> -#endif
> }
>
> static void lo_getattr(fuse_req_t req, fuse_ino_t ino,
> --
> 2.26.2
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
WARNING: multiple messages have this Message-ID (diff)
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Max Reitz <mreitz@redhat.com>
Cc: virtio-fs@redhat.com, Miklos Szeredi <mszeredi@redhat.com>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [PATCH for-5.2] virtiofsd: Announce submounts even without statx()
Date: Thu, 12 Nov 2020 15:41:42 +0000 [thread overview]
Message-ID: <20201112154142.GG13424@work-vm> (raw)
In-Reply-To: <20201103164135.169325-1-mreitz@redhat.com>
* Max Reitz (mreitz@redhat.com) wrote:
> Contrary to what the check (and warning) in lo_init() claims, we can
> announce submounts just fine even without statx() -- the check is based
> on comparing both the mount ID and st_dev of parent and child. Without
> statx(), we will not have the mount ID; but we always have st_dev.
>
> The only problems we have (without statx() and its mount ID) are:
>
> (1) Mounting the same device twice may lead to both trees being treated
> as exactly the same tree by virtiofsd. But that is a problem that
> is completely independent of mirroring host submounts in the guest.
> Both submount roots will still show the FUSE_SUBMOUNT flag, because
> their st_dev still differs from their respective parent.
>
> (2) There is only one exception to (1), and that is if you mount a
> device inside a mount of itself: Then, its st_dev will be the same
> as that of its parent, and so without a mount ID, virtiofsd will not
> be able to recognize the nested mount's root as a submount.
> However, thanks to virtiofsd then treating both trees as exactly the
> same tree, it will be caught up in a loop when the guest tries to
> examine the nested submount, so the guest will always see nothing
> but an ELOOP there. Therefore, this case is just fully broken
> without statx(), whether we check for submounts (based on st_dev) or
> not.
>
> All in all, checking for submounts works well even without comparing the
> mount ID (i.e., without statx()). The only concern is an edge case
> that, without statx() mount IDs, is utterly broken anyway.
>
> Thus, drop said check in lo_init().
>
> Reported-by: Miklos Szeredi <mszeredi@redhat.com>
> Signed-off-by: Max Reitz <mreitz@redhat.com>
Queued
> ---
> tools/virtiofsd/passthrough_ll.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
> index ec1008bceb..6c64b03f1a 100644
> --- a/tools/virtiofsd/passthrough_ll.c
> +++ b/tools/virtiofsd/passthrough_ll.c
> @@ -610,14 +610,6 @@ static void lo_init(void *userdata, struct fuse_conn_info *conn)
> "does not support it\n");
> lo->announce_submounts = false;
> }
> -
> -#ifndef CONFIG_STATX
> - if (lo->announce_submounts) {
> - fuse_log(FUSE_LOG_WARNING, "lo_init: Cannot announce submounts, there "
> - "is no statx()\n");
> - lo->announce_submounts = false;
> - }
> -#endif
> }
>
> static void lo_getattr(fuse_req_t req, fuse_ino_t ino,
> --
> 2.26.2
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2020-11-12 15:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-03 16:41 [Virtio-fs] [PATCH for-5.2] virtiofsd: Announce submounts even without statx() Max Reitz
2020-11-03 16:41 ` Max Reitz
2020-11-10 18:57 ` [Virtio-fs] " Dr. David Alan Gilbert
2020-11-10 18:57 ` Dr. David Alan Gilbert
2020-11-11 12:07 ` [Virtio-fs] " Max Reitz
2020-11-11 12:07 ` Max Reitz
2020-11-12 15:41 ` Dr. David Alan Gilbert [this message]
2020-11-12 15:41 ` Dr. David Alan Gilbert
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=20201112154142.GG13424@work-vm \
--to=dgilbert@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=virtio-fs@redhat.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 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.