linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Christoph Hellwig <hch@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Robo Bot <apw@canonical.com>, Felix Fietkau <nbd@openwrt.org>,
	Neil Brown <neilb@suse.de>, Jordi Pujol <jordipujolp@gmail.com>,
	ezk@fsl.cs.sunysb.edu, David Howells <dhowells@redhat.com>,
	Sedat Dilek <sedat.dilek@googlemail.com>,
	"J. R. Okajima" <hooanon05@yahoo.co.jp>
Subject: Re: [PATCH 00/13] overlay filesystem: request for inclusion (v16)
Date: Wed, 13 Mar 2013 23:19:18 +0000	[thread overview]
Message-ID: <20130313231918.GP21522@ZenIV.linux.org.uk> (raw)
In-Reply-To: <CAJfpeguViuL52fYw922KU1YxRs2YyD=T6tdFVg+buJPw7YUV_Q@mail.gmail.com>

On Wed, Mar 13, 2013 at 11:09:07PM +0100, Miklos Szeredi wrote:
> I don't see how that would deadlock.  We follow VFS locking rules on
> upper and lower filesystem and never lock both at the same time.  And
> we
> only lock overlay first and then upper *or* lower.
> 
> As for same upper on unrelated lower: just don't do it.  As I said, we
> could enforce this, but I don't think this is top priority.

Tell that to container crowd - they seem to be hell-bent on making everything
mount-related non-priveleged ;-/

FWIW, the thing that worries me is the fun involved in situations when
topology of dentry tree of your fs becomes completely unrelated to that
of one (or both) layers; if somebody can start playing with cross-directory
renames in said layers, things can get really nasty.  Another thing is,
you cache some properties of underlying directories in your tree; are you
sure that this cached information becoming stale will _not_ do anything
bad?

> > * ->follow_link():  Why the hell do you bother with struct ovl_link_data???
> > Just to avoid calling ovl_dentry_real() in ovl_put_link()?
> 
> Yes, a copy-up between ovl_follow_link and ovl_put_link will break that.

*blink*

Er...  What's wrong with simply unhashing the sucker on copyup if it's
a symlink?

BTW, looking at your ovl_copy_up() - you do realize that dget_parent(d)
does *not* guarantee that returned dentry will remain the parent of d?
rename() can very well move it away just as dget_parent() is returning
to caller.  As the result, you are not guaranteed that ovl_copy_up_one()
arguments will be anywhere near each other in the tree.  Your locking
and rechecks might be enough to prevent trouble there, but it's not
obvious, to put it mildly.

I'm _very_ sceptical about the idea of delaying copyups that much, BTW;
there's a damn good reason why all implementations starting with Sun's
one in 80s did copy directories up as soon as they got looked up.  Saves
a lot of headache...

As for whiteouts... I think we ought to pull these bits of unionmount
queue into the common stem and add the missing filesystems to them;
ext* and ufs are trivial (keep in mind that FFS derivatives, including
ext*, have d_type in directory entry and type 14 (DT_WHT) is there
precisely for that purpose).  btrfs also has "dir_type" thing - 8bit
field...

Note that upper layer in *any* union would better not change unpredictably
under you - anybody trying to do e.g. NFS as top (either, actually) layer
is welcome to all kinds of PITA when it comes to need to revalidate stale
dentries.  IOW, realistically the upper layer is going to be local,
read-write and not something like sysfs or procfs, where things can disappear
at will.  What does "having xattr is enough" really buy?

  reply	other threads:[~2013-03-13 23:19 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-12 15:41 [PATCH 00/13] overlay filesystem: request for inclusion (v16) Miklos Szeredi
2013-03-12 15:41 ` [PATCH 01/13] vfs-add-i_op-dentry_open Miklos Szeredi
2013-03-12 15:41 ` [PATCH 02/13] vfs-export-do_splice_direct-to-modules Miklos Szeredi
2013-03-12 15:41 ` [PATCH 03/13] vfs-introduce-clone_private_mount Miklos Szeredi
2013-03-12 15:41 ` [PATCH 04/13] overlay filesystem Miklos Szeredi
2013-03-12 15:41 ` [PATCH 05/13] overlayfs-add-statfs-support Miklos Szeredi
2013-03-12 15:41 ` [PATCH 06/13] overlayfs-implement-show_options Miklos Szeredi
2013-03-12 15:41 ` [PATCH 07/13] overlay-overlay-filesystem-documentation Miklos Szeredi
2013-03-12 15:41 ` [PATCH 08/13] fs-limit-filesystem-stacking-depth Miklos Szeredi
2013-03-12 15:41 ` [PATCH 09/13] overlayfs-fix-possible-leak-in-ovl_new_inode Miklos Szeredi
2013-03-12 15:41 ` [PATCH 10/13] overlayfs-create-new-inode-in-ovl_link Miklos Szeredi
2013-03-12 15:41 ` [PATCH 11/13] vfs-export-inode_permission-to-modules Miklos Szeredi
2013-03-12 15:41 ` [PATCH 12/13] ovl-switch-to-inode_permission Miklos Szeredi
2013-03-12 15:41 ` [PATCH 13/13] overlayfs-copy-up-i_uid-i_gid-from-the-underlying-inode Miklos Szeredi
2013-03-12 16:49 ` [PATCH 00/13] overlay filesystem: request for inclusion (v16) Sedat Dilek
2013-03-12 20:00   ` Miklos Szeredi
2013-03-12 17:22 ` J. R. Okajima
2013-03-12 20:01   ` Miklos Szeredi
2013-03-12 21:50 ` Linus Torvalds
2013-03-12 22:23   ` Al Viro
2013-03-13  9:42     ` Sedat Dilek
2013-03-13 15:24     ` Miklos Szeredi
2013-03-13 18:52     ` Al Viro
2013-03-13 22:09       ` Miklos Szeredi
2013-03-13 23:19         ` Al Viro [this message]
2013-03-14 10:37           ` Miklos Szeredi
2013-03-14 12:57             ` DT_WHT (Re: [PATCH 00/13] overlay filesystem: request for inclusion (v16)) J. R. Okajima
2013-03-14 22:59             ` [PATCH 00/13] overlay filesystem: request for inclusion (v16) Al Viro
2013-03-18 11:27               ` Miklos Szeredi
2013-03-13 10:09 ` Sedat Dilek
2013-03-13 10:57   ` Miklos Szeredi
2013-03-20 19:41 George Spelvin
2013-03-20 21:32 ` Al Viro
2013-03-22  5:15 ` Rob Landley

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=20130313231918.GP21522@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=apw@canonical.com \
    --cc=dhowells@redhat.com \
    --cc=ezk@fsl.cs.sunysb.edu \
    --cc=hch@infradead.org \
    --cc=hooanon05@yahoo.co.jp \
    --cc=jordipujolp@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=nbd@openwrt.org \
    --cc=neilb@suse.de \
    --cc=sedat.dilek@googlemail.com \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).