All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Miklos Szeredi <mszeredi@redhat.com>
Cc: virtio-fs-list <virtio-fs@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Virtio-fs] [PATCH] virtiofsd: Show submounts
Date: Wed, 29 Apr 2020 10:31:08 +0200	[thread overview]
Message-ID: <0da9422f-6399-6ef0-1042-4b2b90d49ed8@redhat.com> (raw)
In-Reply-To: <20200428191523.GU2794@work-vm>


[-- Attachment #1.1: Type: text/plain, Size: 3430 bytes --]

On 28.04.20 21:15, Dr. David Alan Gilbert wrote:
> * Miklos Szeredi (mszeredi@redhat.com) wrote:
>> On Tue, Apr 28, 2020 at 4:52 PM Stefan Hajnoczi <stefanha@redhat.com> wrote:
>>>
>>> On Mon, Apr 27, 2020 at 06:59:02PM +0100, Dr. David Alan Gilbert wrote:
>>>> * Max Reitz (mreitz@redhat.com) wrote:
>>>>> Currently, setup_mounts() bind-mounts the shared directory without
>>>>> MS_REC.  This makes all submounts disappear.
>>>>>
>>>>> Pass MS_REC so that the guest can see submounts again.
>>>>
>>>> Thanks!
>>>>
>>>>> Fixes: 3ca8a2b1c83eb185c232a4e87abbb65495263756
>>>>
>>>> Should this actually be 5baa3b8e95064c2434bd9e2f312edd5e9ae275dc ?
>>>>
>>>>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>>>>> ---
>>>>>  tools/virtiofsd/passthrough_ll.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
>>>>> index 4c35c95b25..9d7f863e66 100644
>>>>> --- a/tools/virtiofsd/passthrough_ll.c
>>>>> +++ b/tools/virtiofsd/passthrough_ll.c
>>>>> @@ -2643,7 +2643,7 @@ static void setup_mounts(const char *source)
>>>>>      int oldroot;
>>>>>      int newroot;
>>>>>
>>>>> -    if (mount(source, source, NULL, MS_BIND, NULL) < 0) {
>>>>> +    if (mount(source, source, NULL, MS_BIND | MS_REC, NULL) < 0) {
>>>>>          fuse_log(FUSE_LOG_ERR, "mount(%s, %s, MS_BIND): %m\n", source, source);
>>>>>          exit(1);
>>>>>      }
>>>>
>>>> Do we want MS_SLAVE to pick up future mounts that might happenf rom the
>>>> host?
>>>
>>> There are two separate concepts:
>>>
>>> 1. Mount namespaces.  The virtiofsd process is sandboxed and lives in
>>>    its own mount namespace.  Therefore it does not share the mounts that
>>>    the rest of the host system sees.
>>>
>>> 2. Propagation type.  This is related to bind mounts so that mount
>>>    operations that happen in one bind-mounted location can also appear
>>>    in other bind-mounted locations.
>>>
>>> Since virtiofsd is in a separate mount namespace, does the propagation
>>> type even have any effect?
>>
>> It's a complicated thing.  Current setup results in propagation
>> happening to the cloned namespace, but not to the bind mounted root.
>>
>> Why?  Because setting mounts "slave" after unshare, results in the
>> propagation being stopped at that point.  To make it propagate
>> further, change it back to "shared".  Note: the result changing to
>> "slave" and then to "shared" results in breaking the backward
>> propagation to the original namespace, but allowing propagation
>> further down the chain.
> 
> Do you mean on the "/" ?
> 
> So our current sequence is:
> 
>    (new namespace)
>  1)    if (mount(NULL, "/", NULL, MS_REC | MS_SLAVE, NULL) < 0) {
>  2)   if (mount("proc", "/proc", "proc",
>            ....
>  3)   if (mount(source, source, NULL, MS_BIND | MS_REC, NULL) < 0) {
>  4)  (chdir newroot, pivot, chdir oldroot)
>  5)   if (mount("", ".", "", MS_SLAVE | MS_REC, NULL) < 0) {
>  6)   if (umount2(".", MNT_DETACH) < 0) {
> 
> So are you saying we need a:
>        if (mount(NULL, "/", NULL, MS_REC | MS_SHARED, NULL) < 0) {
> 
>   and can this go straight after (1) ?

Isn’t MS_SHARED and MS_SLAVE mutually exclusive, that is, both are just
different propagation types?  So shouldn’t putting this after (1) be
effectively the same as replacing (1)?

Max


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Max Reitz <mreitz@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Miklos Szeredi <mszeredi@redhat.com>
Cc: virtio-fs-list <virtio-fs@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Virtio-fs] [PATCH] virtiofsd: Show submounts
Date: Wed, 29 Apr 2020 10:31:08 +0200	[thread overview]
Message-ID: <0da9422f-6399-6ef0-1042-4b2b90d49ed8@redhat.com> (raw)
In-Reply-To: <20200428191523.GU2794@work-vm>


[-- Attachment #1.1: Type: text/plain, Size: 3430 bytes --]

On 28.04.20 21:15, Dr. David Alan Gilbert wrote:
> * Miklos Szeredi (mszeredi@redhat.com) wrote:
>> On Tue, Apr 28, 2020 at 4:52 PM Stefan Hajnoczi <stefanha@redhat.com> wrote:
>>>
>>> On Mon, Apr 27, 2020 at 06:59:02PM +0100, Dr. David Alan Gilbert wrote:
>>>> * Max Reitz (mreitz@redhat.com) wrote:
>>>>> Currently, setup_mounts() bind-mounts the shared directory without
>>>>> MS_REC.  This makes all submounts disappear.
>>>>>
>>>>> Pass MS_REC so that the guest can see submounts again.
>>>>
>>>> Thanks!
>>>>
>>>>> Fixes: 3ca8a2b1c83eb185c232a4e87abbb65495263756
>>>>
>>>> Should this actually be 5baa3b8e95064c2434bd9e2f312edd5e9ae275dc ?
>>>>
>>>>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>>>>> ---
>>>>>  tools/virtiofsd/passthrough_ll.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
>>>>> index 4c35c95b25..9d7f863e66 100644
>>>>> --- a/tools/virtiofsd/passthrough_ll.c
>>>>> +++ b/tools/virtiofsd/passthrough_ll.c
>>>>> @@ -2643,7 +2643,7 @@ static void setup_mounts(const char *source)
>>>>>      int oldroot;
>>>>>      int newroot;
>>>>>
>>>>> -    if (mount(source, source, NULL, MS_BIND, NULL) < 0) {
>>>>> +    if (mount(source, source, NULL, MS_BIND | MS_REC, NULL) < 0) {
>>>>>          fuse_log(FUSE_LOG_ERR, "mount(%s, %s, MS_BIND): %m\n", source, source);
>>>>>          exit(1);
>>>>>      }
>>>>
>>>> Do we want MS_SLAVE to pick up future mounts that might happenf rom the
>>>> host?
>>>
>>> There are two separate concepts:
>>>
>>> 1. Mount namespaces.  The virtiofsd process is sandboxed and lives in
>>>    its own mount namespace.  Therefore it does not share the mounts that
>>>    the rest of the host system sees.
>>>
>>> 2. Propagation type.  This is related to bind mounts so that mount
>>>    operations that happen in one bind-mounted location can also appear
>>>    in other bind-mounted locations.
>>>
>>> Since virtiofsd is in a separate mount namespace, does the propagation
>>> type even have any effect?
>>
>> It's a complicated thing.  Current setup results in propagation
>> happening to the cloned namespace, but not to the bind mounted root.
>>
>> Why?  Because setting mounts "slave" after unshare, results in the
>> propagation being stopped at that point.  To make it propagate
>> further, change it back to "shared".  Note: the result changing to
>> "slave" and then to "shared" results in breaking the backward
>> propagation to the original namespace, but allowing propagation
>> further down the chain.
> 
> Do you mean on the "/" ?
> 
> So our current sequence is:
> 
>    (new namespace)
>  1)    if (mount(NULL, "/", NULL, MS_REC | MS_SLAVE, NULL) < 0) {
>  2)   if (mount("proc", "/proc", "proc",
>            ....
>  3)   if (mount(source, source, NULL, MS_BIND | MS_REC, NULL) < 0) {
>  4)  (chdir newroot, pivot, chdir oldroot)
>  5)   if (mount("", ".", "", MS_SLAVE | MS_REC, NULL) < 0) {
>  6)   if (umount2(".", MNT_DETACH) < 0) {
> 
> So are you saying we need a:
>        if (mount(NULL, "/", NULL, MS_REC | MS_SHARED, NULL) < 0) {
> 
>   and can this go straight after (1) ?

Isn’t MS_SHARED and MS_SLAVE mutually exclusive, that is, both are just
different propagation types?  So shouldn’t putting this after (1) be
effectively the same as replacing (1)?

Max


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  parent reply	other threads:[~2020-04-29  8:32 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-24 13:35 [PATCH] virtiofsd: Show submounts Max Reitz
2020-04-24 13:35 ` [Virtio-fs] " Max Reitz
2020-04-27 17:59 ` Dr. David Alan Gilbert
2020-04-27 17:59   ` [Virtio-fs] " Dr. David Alan Gilbert
2020-04-28  6:06   ` Max Reitz
2020-04-28  6:06     ` [Virtio-fs] " Max Reitz
2020-04-28  9:59     ` Dr. David Alan Gilbert
2020-04-28  9:59       ` [Virtio-fs] " Dr. David Alan Gilbert
2020-04-28 10:13       ` Max Reitz
2020-04-28 10:13         ` [Virtio-fs] " Max Reitz
2020-04-28 10:19         ` Dr. David Alan Gilbert
2020-04-28 10:19           ` [Virtio-fs] " Dr. David Alan Gilbert
2020-04-28  8:46   ` Daniel P. Berrangé
2020-04-28  8:46     ` [Virtio-fs] " Daniel P. Berrangé
2020-04-28 14:51   ` Stefan Hajnoczi
2020-04-28 14:51     ` [Virtio-fs] " Stefan Hajnoczi
2020-04-28 14:58     ` Daniel P. Berrangé
2020-04-28 14:58       ` [Virtio-fs] " Daniel P. Berrangé
2020-04-28 19:07     ` Miklos Szeredi
2020-04-28 19:07       ` Miklos Szeredi
2020-04-28 19:15       ` Dr. David Alan Gilbert
2020-04-28 19:15         ` Dr. David Alan Gilbert
2020-04-29  7:59         ` Miklos Szeredi
2020-04-29  7:59           ` Miklos Szeredi
2020-04-29  9:26           ` Miklos Szeredi
2020-04-29  9:26             ` Miklos Szeredi
2020-04-29 12:34             ` Vivek Goyal
2020-04-29 12:34               ` Vivek Goyal
2020-04-29 12:41               ` Vivek Goyal
2020-04-29 12:41                 ` Vivek Goyal
2020-04-29  8:31         ` Max Reitz [this message]
2020-04-29  8:31           ` Max Reitz
2020-04-29  8:52           ` Miklos Szeredi
2020-04-29  8:52             ` Miklos Szeredi
2020-04-29  9:31             ` Max Reitz
2020-04-29  9:31               ` Max Reitz
2020-04-29 14:57   ` Dr. David Alan Gilbert
2020-04-29 14:57     ` [Virtio-fs] " Dr. David Alan Gilbert
2020-04-29 15:35     ` Vivek Goyal
2020-04-29 15:35       ` [Virtio-fs] " Vivek Goyal
2020-04-30  8:06     ` Max Reitz
2020-04-30  8:06       ` [Virtio-fs] " Max Reitz
2020-04-30  8:58       ` Dr. David Alan Gilbert
2020-04-30  8:58         ` [Virtio-fs] " Dr. David Alan Gilbert
2020-04-30  9:21         ` Max Reitz
2020-04-30  9:21           ` [Virtio-fs] " Max Reitz
2020-04-30 11:38           ` Max Reitz
2020-04-30 11:38             ` [Virtio-fs] " Max Reitz
2020-04-30 13:56         ` Vivek Goyal
2020-04-30 13:56           ` [Virtio-fs] " Vivek Goyal
2020-04-30 14:20           ` Dr. David Alan Gilbert
2020-04-30 14:20             ` [Virtio-fs] " Dr. David Alan Gilbert
2020-04-30 14:24             ` Vivek Goyal
2020-04-30 14:24               ` [Virtio-fs] " Vivek Goyal
2020-04-30 14:34             ` Daniel P. Berrangé
2020-04-30 14:34               ` [Virtio-fs] " Daniel P. Berrangé
2020-04-30 14:41               ` Vivek Goyal
2020-04-30 14:41                 ` [Virtio-fs] " Vivek Goyal
2020-04-30 14:47                 ` Daniel P. Berrangé
2020-04-30 14:47                   ` [Virtio-fs] " Daniel P. Berrangé
2020-04-30 15:41                   ` Vivek Goyal
2020-04-30 15:41                     ` [Virtio-fs] " Vivek Goyal
2020-05-01 17:53 ` Dr. David Alan Gilbert
2020-05-01 17:53   ` [Virtio-fs] " 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=0da9422f-6399-6ef0-1042-4b2b90d49ed8@redhat.com \
    --to=mreitz@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=mszeredi@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --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.