From: David Howells <dhowells@redhat.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: dhowells@redhat.com, Ric Wheeler <rwheeler@redhat.com>,
Alexander Viro <aviro@redhat.com>,
Christoph Hellwig <hch@infradead.org>,
Ingo Molnar <mingo@elte.hu>,
Michal Suchanek <hramrach@centrum.cz>,
Ian Kent <ikent@redhat.com>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
Jeff Moyer <jmoyer@redhat.com>,
miklos@szeredi.hu
Subject: Re: Union mount and lockdep design issues
Date: Mon, 11 Jul 2011 12:01:09 +0100 [thread overview]
Message-ID: <1408.1310382069@redhat.com> (raw)
In-Reply-To: <1310305703.13309.7.camel@twins>
Peter Zijlstra <peterz@infradead.org> wrote:
> > > The main problem I've got is that it causes lockdep to generate warnings
> > > when the top layer and one of the lower layers are of the same
> > > filesystem type. The obvious way round this is to give each superblock
> > > its own i_mutex lock class rather than putting this in the
> > > file_system_type struct, but I'm not sure of the consequences (the two
> > > obvious problems are superblock transience and the fact that there may
> > > be so many more of them that it may explode lockdep).
>
> Can't, that would involve classes in dynamically allocated memory (as
> you cannot a-priori determine how many instances there will be of a
> particular sb). There a number of good (although at times rather
> frustrating) reasons why lockdep cannot do dynamic memory.
What does this mean for filesystem modules that get removed and inserted
again? That's something I do during development rather than rebooting the
machine.
> Most of those arguments center around things like: allocating memory
> involves locks, therefore we could end up wanting to allocate memory
> while in the allocator etc.
I'm not sure what these arguments are. Initialising the lock class doesn't
need to be done with any locks held.
I assumed the problems came from key reuse and the storage of out-of-date
keys, and an over-abundance of keys, where a lock class's key is simply the
pointer to its struct.
> Also, why would you want to have a class per sb-instance? From last
> talking to David, he said there could only ever be 2 filesystems
> involved in this, the top and bottom, and it is determined on (union)
> mount time which is which.
There can be more than 2 - one upperfs (the actual union) and many lowerfs -
though I think only one lowerfs is accessed at a time.
However, I was wondering that if in the future it could be possible to make it
possible to union over a union. I think that conceptually it shouldn't be that
hard, but definitely lockdep presents a barrier unless the top union goes
behind the scenes of the lower union and interacts with its lowerfs's directly.
> I'm also assuming that once a filesystem is part of a union mount, it
> cannot be accessed from outside of said union (can it? can the botton be
> itself be the top layer of another union?)
Not at the moment; the hard read-only requirements on the lowerfs versus the
writeability requirements of the upperfs (you can't enter a directory that you
can't mirror up) prevent it.
However, at some point I'd be interested in trying to make it possible to union
over a writeable filesystem. This is pretty much a requirement for unioning
over NFS (as you can't tell the server to make the volume you're mounting hard
read-only).
> Therefore, why can't we, on constructing the union layers, reset the lock
> classes?
Reset in what sense?
> Also, in what state are the filesystems on construction of the union? Are
> they already fully formed and populated (do inodes already exist?)
The lower filesystems must be fully formed and, at present, may not be modified
whilst in the union.
The upper filesystem can be empty or filled by a previous union. In fact,
there's nothing stopping the upper fs being an ordinary fs that's then used as
the upper layer in a union, but I'm not sure you can then access the lower
echelons as the directories don't contain fallthru entries.
David
next prev parent reply other threads:[~2011-07-11 11:01 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-12 15:00 Unionmount status? Michal Suchanek
2011-04-12 20:31 ` Ric Wheeler
2011-04-12 21:36 ` Michal Suchanek
2011-04-13 14:18 ` Jiri Kosina
2011-04-13 15:13 ` Michal Suchanek
2011-04-14 8:38 ` Miklos Szeredi
2011-04-14 9:48 ` Sedat Dilek
2011-04-14 9:58 ` Miklos Szeredi
2011-04-15 11:22 ` Michal Suchanek
2011-04-15 11:31 ` Miklos Szeredi
2011-04-15 11:51 ` Michal Suchanek
2011-04-15 12:29 ` Miklos Szeredi
2011-04-15 12:34 ` Michal Suchanek
2011-04-15 12:48 ` Miklos Szeredi
2011-04-15 21:48 ` Hugh Dickins
2011-04-15 22:18 ` Andreas Dilger
2011-04-18 13:31 ` Michal Suchanek
2011-04-19 20:04 ` [PATCH] tmpfs: implement generic xattr support Miklos Szeredi
2011-04-20 2:18 ` Phillip Lougher
2011-04-20 13:43 ` Miklos Szeredi
2011-04-21 6:59 ` Michal Suchanek
2011-04-21 9:08 ` Miklos Szeredi
2011-04-21 10:59 ` Michal Suchanek
2011-04-21 14:58 ` Jordi Pujol
2011-04-21 15:22 ` Michal Suchanek
2011-04-21 15:43 ` Michal Suchanek
2011-04-21 17:26 ` Miklos Szeredi
2011-04-21 19:17 ` Michal Suchanek
2011-04-20 16:00 ` Serge E. Hallyn
2011-05-12 4:20 ` Hugh Dickins
2011-05-12 7:52 ` Michal Suchanek
2011-05-12 12:27 ` Miklos Szeredi
2011-05-12 14:00 ` Miklos Szeredi
2011-05-12 16:52 ` Hugh Dickins
2011-04-18 13:34 ` Unionmount status? Michal Suchanek
2011-04-18 13:37 ` Michal Suchanek
2011-04-13 17:26 ` Ric Wheeler
2011-04-13 18:58 ` Michal Suchanek
2011-04-13 19:11 ` Ric Wheeler
2011-04-13 19:47 ` Michal Suchanek
2011-04-14 4:50 ` Ian Kent
2011-04-14 9:32 ` Michal Suchanek
2011-04-14 9:40 ` Miklos Szeredi
2011-04-14 13:21 ` Ric Wheeler
2011-04-14 14:54 ` Michal Suchanek
2011-04-15 16:31 ` Ric Wheeler
2011-04-14 19:14 ` David Howells
2011-06-29 9:39 ` Union mount and overlayfs bake off? Ric Wheeler
2011-06-29 11:40 ` Michal Suchanek
2011-06-29 10:17 ` David Howells
2011-06-30 12:44 ` Miklos Szeredi
2011-07-10 8:28 ` Union mount and lockdep design issues Ric Wheeler
2011-07-10 13:48 ` Peter Zijlstra
2011-07-11 8:35 ` Michal Suchanek
2011-07-11 11:01 ` David Howells [this message]
2011-07-11 12:00 ` Peter Zijlstra
2011-07-11 13:36 ` Michal Suchanek
2011-07-11 13:50 ` Ian Kent
2011-07-11 16:17 ` Michal Suchanek
2011-07-11 17:23 ` Ian Kent
2011-07-11 18:08 ` Michal Suchanek
2011-07-12 8:30 ` Miklos Szeredi
2011-07-12 9:58 ` Michal Suchanek
2011-07-12 11:45 ` Miklos Szeredi
2011-07-12 18:49 ` Michal Suchanek
2011-07-13 9:49 ` Miklos Szeredi
2011-07-13 12:02 ` David Howells
2011-07-13 13:20 ` Miklos Szeredi
2011-07-14 0:57 ` David Howells
2011-07-11 13:54 ` David Howells
2011-07-11 14:02 ` Peter Zijlstra
2011-07-11 14:50 ` [PATCH 1/2] VFS: Pass mount flags to sget() David Howells
2011-07-11 14:50 ` [PATCH 2/2] union-mount: Duplicate the i_{, dir_}mutex lock classes and use for upper layer David Howells
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=1408.1310382069@redhat.com \
--to=dhowells@redhat.com \
--cc=aviro@redhat.com \
--cc=hch@infradead.org \
--cc=hramrach@centrum.cz \
--cc=ikent@redhat.com \
--cc=jmoyer@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rwheeler@redhat.com \
/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).