Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Nov 2002 15:24:42 -0800
From:      Terry Lambert <tlambert2@mindspring.com>
To:        Matthew Dillon <dillon@apollo.backplane.com>
Cc:        Daniel O'Connor <doconnor@gsoft.com.au>, Hans Zaunere <zaunere@yahoo.com>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: Shared files within a jail
Message-ID:  <3DD2DF3A.18489E80@mindspring.com>
References:  <20021113034726.75787.qmail@web12801.mail.yahoo.com> <1037159767.66058.34.camel@chowder.localdomain> <200211130530.gAD5UxNt067928@apollo.backplane.com> <3DD1FAB9.82607C41@mindspring.com> <200211131114.gADBE3lM069566@apollo.backplane.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Matthew Dillon wrote:
> :>     Try using null mounts.  The warning is in there because making the
> :>     null mount code work is a real hack and the authors aren't entirely
> :>     sure that everything's gotten covered.  That said, use of a null mount
> :>     is certainly a lot safer if the stuff behind the mount is mostly
> :>     static.
> :
> :The problem is in the VM object alias code.  Specifically, the
> :getpages/putpages have to be implemented in terms of read/write,
> :so that there are not two vm_object_t's that refer to the same
> :data, since there is no "upcall" to notify of changes in a lower
> :layer, and therefore guarantee coherency.
> 
>     I'm fairly sure the VM issues were fixed when VOP_GETVOBJECT was
>     added.  A file accessed via a null mount will have the same VM object
>     as the file in the original filesystem.  I'm not 100% sure about
>     that, I wasn't the one who did it, but I seem to recall it being
>     discussed.

VOP_GETVOBJECT is a different name, but the VOP was my suggestion,
to allow an upper layer to obtain a backing object, and to
collapse intermediate layers.

The issue is that the NULLFS getpages falls through the the
vfs_default.c vop_stdgetpages(), which calls the function
vnode_pager_generic_getpages(), which in turn, calls VOP_BMAP(),
which in null_vnops.c is vop_eopnotsupp(), so it falls back to
vnode_pager_input_smlfs(), which VOP_BMAP()'s *again*, but off
the device.

At which point, you've lost coherency.

-- Terry

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3DD2DF3A.18489E80>