[Virtio-fs] Query about announce_submounts and ro/rw mounts

Dr. David Alan Gilbert dgilbert at redhat.com
Thu Mar 4 17:23:46 UTC 2021


* Max Reitz (mreitz at redhat.com) wrote:
> On 04.03.21 17:39, Dr. David Alan Gilbert wrote:
> > * Max Reitz (mreitz at redhat.com) wrote:
> > > On 03.03.21 19:20, Vivek Goyal wrote:
> > > > Hi Max,
> > > 
> > > Hi Vivek,
> > > 
> > > > I was playing with "announce_submounts". I have a read-only bind mounted
> > > > mount point in shared directory. Inside guest, when I step into that
> > > > directory, I see that a mount point got created but its "rw" and not "ro".
> > > > 
> > > > Is that intentional.
> > > 
> > > No, that isn’t intentional.  I just didn’t think of sharing such information
> > > with the guest.
> > > 
> > > > Can we send property of mount also to guest when
> > > > notifying guest about mount point.
> > > 
> > > I suppose we can send it (by adding a new flag alongside
> > > FUSE_ATTR_SUBMOUNT), and we can make the mount ro by setting the SB_RDONLY
> > > flag in fuse_dentry_automount().
> > > 
> > > If we implemented this for RDONLY, are there other flags that we might want
> > > to consider as well?  (e.g. nodev etc.)
> > > 
> > > OTOH, I just tested NFS, and it doesn’t pass through the RO flag:
> > > 
> > > [...]
> > > /tmp/xfs.img on ~/tmp/test-nfs/mount type xfs (ro,...)
> > > [...]
> > > 127.0.0.1:~/tmp/test-nfs on /mnt/tmp type nfs4 (rw,...)
> > > 127.0.0.1:~/tmp/test-nfs/mount on /mnt/tmp/mount type nfs4 (rw,...)
> > > 
> > > So is it really important or more a matter of style?
> > 
> > So what happens if you try and write a file in /mnt/tmp/mount ?
> 
> Well, the EROFS gets passed through from host to client:
> 
> $ LANG=C sudo touch /mnt/tmp/mount/foo
> touch: cannot touch '/mnt/tmp/mount/foo': Read-only file system
> $ mount
> [...]
> 127.0.0.1:~/tmp/test-nfs on /mnt/tmp type nfs4 (rw,...)
> 127.0.0.1:~/tmp/test-nfs/mount on /mnt/tmp/mount type nfs4 (rw,...)
> 
> (So the submount still appears rw – NFS doesn’t reevaluate when it receives
> EROFS.)

Oh OK, that's not as bad as I feared.

> 
> On virtio-fs, it’s the same:
> 
> $ LANG=C sudo touch /mnt/mnt1
> touch: cannot touch '/mnt/mnt1/foo': Read-only file system
> $ mount
> [...]
> host on /mnt type virtiofs (rw,relatime)
> none on /mnt/mnt1 type virtiofs (rw,relatime)

Good.

Dave

> Max
-- 
Dr. David Alan Gilbert / dgilbert at redhat.com / Manchester, UK




More information about the Virtio-fs mailing list