* Max Reitz (mre...@redhat.com) wrote: > On 02.11.20 20:56, Dr. David Alan Gilbert (git) wrote: > > From: Max Reitz <mre...@redhat.com> > > > > Whenever we encounter a directory with an st_dev or mount ID that > > differs from that of its parent, we set the FUSE_ATTR_SUBMOUNT flag so > > the guest can create a submount for it. > > > > We only need to do so in lo_do_lookup(). The following functions return > > a fuse_attr object: > > - lo_create(), though fuse_reply_create(): Calls lo_do_lookup(). > > - lo_lookup(), though fuse_reply_entry(): Calls lo_do_lookup(). > > - lo_mknod_symlink(), through fuse_reply_entry(): Calls lo_do_lookup(). > > - lo_link(), through fuse_reply_entry(): Creating a link cannot create a > > submount, so there is no need to check for it. > > - lo_getattr(), through fuse_reply_attr(): Announcing submounts when the > > node is first detected (at lookup) is sufficient. We do not need to > > return the submount attribute later. > > - lo_do_readdir(), through fuse_add_direntry_plus(): Calls > > lo_do_lookup(). > > > > Make announcing submounts optional, so submounts are only announced to > > the guest with the announce_submounts option. Some users may prefer the > > current behavior, so that the guest learns nothing about the host mount > > structure. > > > > (announce_submounts is force-disabled when the guest does not present > > the FUSE_SUBMOUNTS capability, or when there is no statx().) > > > > Signed-off-by: Max Reitz <mre...@redhat.com> > > Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> > > Message-Id: <20201102161859.156603-6-mre...@redhat.com> > > Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > > --- > > tools/virtiofsd/helper.c | 1 + > > tools/virtiofsd/passthrough_ll.c | 22 ++++++++++++++++++++++ > > 2 files changed, 23 insertions(+) > > > diff --git a/tools/virtiofsd/passthrough_ll.c > > b/tools/virtiofsd/passthrough_ll.c > [...] > > > index 34d107975f..ec1008bceb 100644 > > --- a/tools/virtiofsd/passthrough_ll.c > > +++ b/tools/virtiofsd/passthrough_ll.c > > [...] > > > @@ -601,6 +604,20 @@ static void lo_init(void *userdata, struct > > fuse_conn_info *conn) > > [...] > > > +#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 > > When reviewing this series, Miklos noted today that this warning is > wrong (we can still announce submounts even without statx()), and we > concluded that we should probably drop it and the > “lo->announce_submounts = false” assignment (i.e. this whole block). > > I don’t think that needs to stop this pull request, though, we can > easily fix it on top.
That's OK, send me a follow up patch to fix the warning; that's a minor. Dave > Max -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK