On Sat, Sep 12, 2009 at 01:43:52AM +0000, Izumi Tsutsui wrote: > > Log Message: > Pull a fix for mount function from ffs_vfsops.c rev1.186: > > Change ffs_mount, in MNT_UPDATE case, to check dev_t's for equality > > instead of just vnode pointers. Fixes erroneous "does not match mounted > > device" errors from mount(8) in the presence of MFS /dev, init.root, &c.
Hmmm.... seems like a more generic problem. SYSV fixed this by adding another level of indirection. For char/block devices opened through the filesystem, the foo_fs vode points to a specfs vnode - which is common to all opens of the major/minor. For 'clone' opens the 'file' structure directly references the specfs vnode. For mount you only want to remember the specfs vnode, not the one of the fs that contained the disk inode containing the dev_t number. Then you can unmount the fs ... David -- David Laight: da...@l8s.co.uk