All of lore.kernel.org
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Dmitry Monakhov <dmonakhov@openvz.org>
Cc: Matthew Wilcox <matthew@wil.cx>,
	Al Viro <viro@ZenIV.linux.org.uk>,
	linux-fsdevel@vger.kernel.org
Subject: Re: [RFC] vfs generic subtree support
Date: Tue, 16 Feb 2010 14:25:40 -0500	[thread overview]
Message-ID: <20100216192540.GA26292@fieldses.org> (raw)
In-Reply-To: <87sk91i4bk.fsf@openvz.org>

On Tue, Feb 16, 2010 at 06:32:47PM +0300, Dmitry Monakhov wrote:
> Matthew Wilcox <matthew@wil.cx> writes:
> 
> > On Tue, Feb 16, 2010 at 06:00:32PM +0300, Dmitry Monakhov wrote:
> >> Use-cases:
> >> *Assing maximum disc space consumption for some hierarchy *
> >> 
> >>   1) Create chroot environment
> >>     # tar  xf chroot_env.tar /var/xxx/chroot
> >>   2) Assign some metagroup id to the chroot content (via not yet
> >>      existent ./metagroup cmd-tool)
> >>     # find /var/xxx/chroot  | xargs ./metagroup --set 1000
> >> 
> >>   3) Setup quota limits
> >>     # quota-set --type metagroup --blk_soft=1024M blk_hard=1024M /var
> >> 
> >>   4) Export this tree (it may be more complex)
> >>     # mount /var/xxx/chroot /mnt/chroot -obound
> >> 
> >>   5)Now we may use this /mnt/chroot as:
> >>     5A) A regular chroot envirement, user is unable to exceed metagroup
> >>         quota, regardless to real available space on /var/
> >>     5B) As a container's (namespace) root. 
> >>     5C) export this /mnt/chroot to nfs server and nfs client can not
> >>         overcome given metagroup quota limit. 
> >
> > This all seems quota-related ... do you envisage uses that aren't
> > quota-related?
> Yes. Since link/rename behavior is no longer depends on metagroup
> I'm consider it as quota related only.  

It'd allow nfsd to implement export subtrees safely.

(The current problem: there's not an easy way to determine whether an
inode (looked up from a filehandle) is reachable from a given directory.
So if you export a directory that isn't the root of a filesystem, you
have an unfortunate choice:

	- turn on the "subtree_check" export option: add information
	  sufficient to lookup the parent directory to each filehandle.
	  But then filehandles change (and clients get ESTALE) on
	  cross-directory rename.

	- Accept the possibility that someone could fake up a filehandle
	  that grants access to files outside the exported subtree.  OK
	  if you're exporting the subtree just for convenience, but bad
	  if you're exporting /usr/local and think /etc/some-secret is
	  safe without /usr/local being on a separate partition.

With subtrees presumably we could stick the subtree-id in the
filehandle, and the subtree would provide a security boundary that's
easy to check on filehandle lookup (by comparing the subtree-id in the
filehandle to the one in the inode you find).  And subtrees would be
simpler to manage than separate partitions.)

--b.

  reply	other threads:[~2010-02-16 19:25 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-16 10:52 [RFC] vfs generic subtree support Dmitry Monakhov
2010-02-16 12:20 ` Al Viro
2010-02-16 12:37   ` Dmitry Monakhov
2010-02-16 13:38     ` Al Viro
2010-02-16 14:01       ` Dmitry Monakhov
2010-02-16 14:21         ` Al Viro
2010-02-16 15:00           ` Dmitry Monakhov
2010-02-16 15:12             ` Matthew Wilcox
2010-02-16 15:32               ` Dmitry Monakhov
2010-02-16 19:25                 ` J. Bruce Fields [this message]
2010-02-16 19:32                   ` Christoph Hellwig
2010-02-16 19:39                     ` J. Bruce Fields

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100216192540.GA26292@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=dmonakhov@openvz.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=viro@ZenIV.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.