Re: what is necessary for directory hard links

From: Bodo Eggert
Date: Wed Jul 26 2006 - 05:14:27 EST


On Tue, 25 Jul 2006, Horst H. von Brand wrote:
> Bodo Eggert <7eggert@xxxxxxxxxxxx> wrote:
> > Horst H. von Brand <vonbrand@xxxxxxxxxxxx> wrote:
> > > Joshua Hudson <joshudson@xxxxxxxxx> wrote:

> > > [...]
> > >
> > >> Maybe someday I'll work out a system by which much less is locked.
> > >> Conceptually, all that is requred to lock for the algorithm
> > >> to work is creating hard-links to directories and renaming directories
> > >> cross-directory.
> > >
> > > Some 40 years of filesystem development without finding a solution to that
> > > conundrum would make that quite unlikely, but you are certainly welcome to
> > > try.
>
> > There is a simple solution against loops: No directory may contain a
> > directory with a lower inode number.
>
> This is a serious restriction...

That's why I relax it in the next paragraph, so you'll only have to deal
with inode numbers iff you want to hardlink directories.

> > Off cause this would interfere with normal operations, so you'll allocate all
> > normal inodes above e.g. 0x800000 and don't test between those inodes.
>
> And allow loops there? I don't see how that solves anything...

No. Don't allow dir-hardliks there, so you can't create loops so you can
freely create them without risking loops.

> > If you want to hardlink, you'll use a different (privileged) mkdir call
> > that will allocate a choosen low inode number. This is also required for
> > the parents of the hardlinked directories.
>
> Argh... even /more/ illogical restrictions!

If no (hardlink) directory may contain a lower inode directory, all
parents need to have a low inode.


A legal tree would e.g. look like this:

1-+-100
| +-10001
| `-10002
+-101
| +-10101
| +-10002
| `-10102
`-10101

In order to create a loop, you'd e.g. need to link 101 into 10002. You
can't, because they are ordered.

Directories above 0x800000 aren't ordered except being greater than low
inodes, so you can create normal directories anywhere you desire, but you
obviously can't hardlink them.

--
It's redundant! It's redundant!
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/