Re: reiser4 plugins

David Masover
2005-07-06T21:01:57Z

Jonathan Briggs wrote:
> On Wed, 2005-07-06 at 15:51 -0400, Hubert Chan wrote:
>
>>On Wed, 06 Jul 2005 12:52:23 -0600, Jonathan Briggs <jbriggs@esoft.com> said:
>
> [snip]
>
>>>It still has the performance and locking problem of having to update
>>>every child file when moving a directory tree to a new parent. On the
>>>other hand, maybe the benefit is worth the cost.
>>
>>Every node should store the inode number(s) for its parent(s). Not the
>>path name. So you don't need to do any updates, since when you move a
>>tree, inode numbers don't change.
>
>
> You do need the updates if you change what inode is the parent.
>
> /a/b/c, /a/b/d, /a/b/e, /b
> mv /a/b /b
> Now you have to change the stored grand-parent inodes for /a/b/c, /a/b/d
> and /a/b/e so that they reference /b/b instead of /a/b.

no, c, d, and e all would reference /a/b's *inode*, not *pathname*.
Then /a/b would reference /a. So with the above mv, you just change the
reference in /a/b (now /b/b) to point to /b as parent.

Only way you would have to touch c, d, and e is if you did:

mkdir /b/b
mv /a/b/* /b/b/

but, since you're also essentially unlinking them from /a/b and linking
them into /b, it's not that much more of a performance hit to update one
pointer in the file.