All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Waychison <Michael.Waychison@Sun.COM>
To: Ram <linuxram@us.ibm.com>
Cc: "J. Bruce Fields" <bfields@fieldses.org>,
	Al Viro <viro@parcelfarce.linux.theplanet.co.uk>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC] shared subtrees
Date: Wed, 02 Feb 2005 16:08:32 -0500	[thread overview]
Message-ID: <42014150.9090500@sun.com> (raw)
In-Reply-To: <1107376434.5992.113.camel@localhost>

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ram wrote:
> On Wed, 2005-02-02 at 11:45, Mike Waychison wrote:
> 
> Ram wrote:
> 
>>On Tue, 2005-02-01 at 15:21, J. Bruce Fields wrote:
> 
> 
>>>On Tue, Jan 25, 2005 at 01:07:12PM -0800, Ram wrote:
> 
> 
>>>>If there exists a private subtree in a larger shared subtree, what
>>>>happens when the larger shared subtree is rbound to some other place? 
>>>>Is a new private subtree created in the new larger shared subtree? or
>>>>will that be pruned out in the new larger subtree?
> 
>>>"mount --rbind" will always do at least all the mounts that it did
>>>before the introduction of shared subtrees--so certainly it will copy
>>>private subtrees along with shared ones.  (Since subtrees are private by
>>>default, anything else would make --rbind do nothing by default.) My
>>>understanding of Viro's RFC is that the new subtree will have no
>>>connection with the preexisting private subtree (we want private
>>>subtrees to stay private), but that the new copy will end up with
>>>whatever propagation the target of the "mount --rbind" had.  (So the
>>>addition of the copy of the private subtree to the target vfsmount will
>>>be replicated on any vfsmount that the target vfsmount propogates to,
>>>and those copies will propagate among themselves in the same way that
>>>the copies of the target vfsmount propagate to each other.)
> 
> 
>>ok. that makes sense. As you said the private subtree shall get copied
>>to the new location, however propogations wont be set in either
>>directions. However I have a rather unusual requirement which forces 
>>multiple rbind of a shared subtree within the same shared subtree.
> 
>>I did the calculation and found that the tree simply explodes with
>>vfsstructs.  If I mark a subtree within the larger shared tree as
>>private, then the number of vfsstructs grows linearly O(n). However if
>>there was a way of marking a subtree within the larger shared tree as
>>unclonable than the increase in number of vfsstruct is constant.
> 
>>What I am essentially driving at is, can we add another feature which 
>>allows me to mark a subtree as unclonable?
> 
> 
>>Read below to see how the tree explodes:
> 
>>to run you through an example: 
> 
>>(In case the tree pictures below gets garbled, it can also be seen at 
>> http://www.sudhaa.com/~ram/readahead/sharedsubtree/subtree )
> 
>>step 1:
>>   lets say the root tree has just two directories with one vfsstruct. 
>>                    root
>>                   /    \
>>                  tmp    usr
>>    All I want is to be able to see the entire root tree 
>>   (but not anything under /root/tmp) to be viewable under /root/tmp/m* 
> 
>>step2:
>>      mount --make-shared /root
> 
>>      mkdir -p /tmp/m1
> 
>>      mount --rbind /root /tmp/m1
> 
>>      the new tree now looks like this:
> 
>>                    root
>>                   /    \
>>                 tmp    usr
>>                /
>>               m1
>>              /  \ 
>>             tmp  usr
>>             /
>>            m1
> 
>>          it has two vfsstructs
> 
>>step3: 
>>            mkdir -p /tmp/m2
>>            mount --rbind /root /tmp/m2
> 
> At this step, you probably shouldn't be using --rbind, but --bind
> instead to only bind a copy of the root vfsmount, so it now looks like:
> 
> 
>>                      root
>>                     /    \ 
>>                   tmp     usr
>>                  /    \
>>                m1       m2
>>               / \       /  \
>>             tmp  usr   tmp  usr
>>             / \         / \ 
>>            m1  m2      m1  m2
> 
> 
>> Well I thought about this. Even Bruce Fields suggested this in a private
>> thread. But this solution can be racy. You may have to do multiple binds
>> for all the vfstructs that reside in the subtree under / (but not under
>> /root/tmp). And doing it atomically without racing with other
>> simultaneous mounts would be tricky.
> 

Well, fwiw, I have the same kind of race in autofsng.  I counter it by
building up the vfsmount tree elsewhere and mount --move'ing it.

Unfortunately, the RFC states that moving a shared vfsmount is
prohibited (for which the reasoning slips my mind).


- --
Mike Waychison
Sun Microsystems, Inc.
1 (650) 352-5299 voice
1 (416) 202-8336 voice

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOTICE:  The opinions expressed in this email are held by me,
and may not represent the views of Sun Microsystems, Inc.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCAUFQdQs4kOxk3/MRAksjAJ4wCzY7jc8aUGKeiHKTywFKxhN1qACeI4HM
eO3XGtYgnbOZJYT3K1nbKd4=
=wwuF
-----END PGP SIGNATURE-----

  reply	other threads:[~2005-02-02 21:19 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-13 22:18 [RFC] shared subtrees Al Viro
2005-01-13 23:30 ` Mike Waychison
2005-01-14  0:19   ` Al Viro
2005-01-14  1:11 ` Erez Zadok
2005-01-14  1:38   ` Al Viro
2005-01-16  0:46 ` J. Bruce Fields
2005-01-16  0:51   ` Al Viro
2005-01-16 16:02 ` J. Bruce Fields
2005-01-16 18:06   ` Al Viro
2005-01-16 18:42     ` J. Bruce Fields
2005-01-17  6:11       ` Al Viro
2005-01-17 17:32         ` J. Bruce Fields
2005-01-25 21:07           ` Ram
2005-01-25 21:47             ` Mike Waychison
2005-01-25 21:55               ` J. Bruce Fields
2005-01-25 23:56                 ` Mike Waychison
2005-01-25 22:02               ` Ram
2005-02-01 23:37                 ` J. Bruce Fields
2005-02-02  1:37                   ` J. Bruce Fields
2005-02-01 23:21             ` J. Bruce Fields
2005-02-02 18:36               ` Ram
2005-02-02 19:45                 ` Mike Waychison
2005-02-02 20:33                   ` Ram
2005-02-02 21:08                     ` Mike Waychison [this message]
2005-02-02 21:25                       ` J. Bruce Fields
2005-02-02 21:33                         ` Mike Waychison
2005-02-02 21:48                           ` J. Bruce Fields
2005-04-05  9:37         ` Ram
2005-01-17 18:31 ` Mike Waychison
2005-01-17 19:00   ` J. Bruce Fields
2005-01-17 19:30     ` Mike Waychison
2005-01-17 19:32       ` J. Bruce Fields
2005-01-17 20:11         ` Mike Waychison
2005-01-17 20:39           ` Al Viro
2005-01-18 19:44             ` Mike Waychison
2005-01-17 21:21           ` J. Bruce Fields
2005-01-28 22:31 ` Mike Waychison
2005-01-29  4:40   ` raven
2005-01-31 17:19     ` Mike Waychison
2005-02-01  1:31       ` Ian Kent
2005-02-01  2:28   ` Ram
2005-02-01  7:02     ` Mike Waychison
2005-02-01 19:27       ` Ram
2005-02-01 21:15         ` Mike Waychison
2005-02-01 23:33           ` Ram
2005-02-02  2:10           ` 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=42014150.9090500@sun.com \
    --to=michael.waychison@sun.com \
    --cc=bfields@fieldses.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxram@us.ibm.com \
    --cc=viro@parcelfarce.linux.theplanet.co.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.