Matthew Dillon <dil...@apollo.backplane.com> wrote: > :Tony Finch <f...@demon.net> wrote: > : > :Well, in the absence of any comments I hacked around a bit and ended > :up with the following patch (against 3.3-RC), which permits the same > :block device to be mounted read-only more than once. The motivation > :for this is to permit multiple chrooted environments to share the same > :/usr partition. > > Hmm... well, there is a problem here. I believe this will allow > you to open the underlying block device read-only as well as mount > the filesystem read-only. This will confuse the buffer cache badly.
I don't think so -- spec_open checks whether the block device has been mounted in order to prevent this, and I made sure that that check remains in force except when spec_open is called by ffs_mountfs (by adding the FMOUNTING flag). I assumed that the buffer cache will handle multiple read-only mounts because it handles multiple userland reading file descriptors. > Also, this may not be the best place to put the code. It make sense > to be able to mount a block device multiple times in a read-only > fashion, but the code should be in the open for the block device > rather then in UFS/FFS, so it can be used with other filesystems > and for other purposes. Yes, it's evident that this is true because I had to hack around essentially the same test in both spec_open and ffs_mountfs; removing the checks down from ffs_mountfs so it relies on spec_mount to DTRT would be neater, I think. Tony. -- f.a.n.finch d...@dotat.at f...@demon.net e pluribus unix To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-hackers" in the body of the message