From: "Joshua Hudson" <joshudson@gmail.com>
To: linux-kernel@vger.kernel.org
Subject: Re: what is necessary for directory hard links
Date: Mon, 24 Jul 2006 21:49:01 -0700 [thread overview]
Message-ID: <bda6d13a0607242149j4f1492ag47bd8e3e1f0607da@mail.gmail.com> (raw)
In-Reply-To: <200607241822.k6OIMJcY014229@turing-police.cc.vt.edu>
On 7/24/06, Valdis.Kletnieks@vt.edu <Valdis.Kletnieks@vt.edu> wrote:
> On Mon, 24 Jul 2006 09:21:04 PDT, Joshua Hudson said:
> > On 7/24/06, Valdis.Kletnieks@vt.edu <Valdis.Kletnieks@vt.edu> wrote:
>
> > Actually, I walk from the source inode down to try to find the
> > target inode. If not found, this is not attempting to create a loop.
>
> The problem is that the "target inode" may not be the one obviously causing the
> loop - you may be trying to link a directory into a/b/c, while the loop
> is caused by a link from a/b/c/d/e/f/g back up to someplace.
>
> Consider:
[case of 3^4 directories ]
> Yes, you have to search *every* directory under x, y, and z.
With a mesh graph like that one, you are right. Rather like my
test cases to see if the loop-detection algorithm is working.
> And this is an artificially small
> directory tree. Think about a /usr/src/ that has 4 or 5 linux-kernel
> trees in it, with some 1,650 directories per tree...
Interesting case.
>
> > Should be obvious that the average case is much less than the
> > whole tree.
>
> "The average case" is the one where the feature isn't used. When you
> actually *use* it, you get "not average case" behavior - not a good sign.
>
My use cases were generally about creating links at the twig level.
In my consideration, there would be two or more topical trees arranged
by different criteria, and they would bottom out at the
topics, which are directories that hold a number of documents.
A document might be a single file, a few files together, or a
directory that contains a few files that should alwas be together. I
suppose that an entire source tree could be considered one document,
and there lies the flaw.
This system is an attempt to replace a system of hard links to files
that didn't work because certain MS applications use rename and create
when saving files. The filesystem is intended to be
exported over smbfs. It is still very-much a single-user scheme,
which is why the bad worst case didn't really concern me.
> >
> > mv /a/b/c/d ../../w/z/b is implemented as this in the filesystem:
> > ln /a/b/c/d ../../w/z/b && rm /a/b/c/d
> >
> > So what it's going to do is try to find z under /a/b/c/d.
>
> Even if that's sufficient (which it isn't), it's going to be painful to lock
> the filesystem for 20 or 30 seconds while you walk everything to make sure
> there's no problem.
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.
> (which it isn't)
Counterexample? I should swear that any cycle created by rename must
pass through the new parent into the victim and back to the new
parent.
next prev parent reply other threads:[~2006-07-25 4:49 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <6ARGK-19L-5@gated-at.bofh.it>
[not found] ` <6B8og-1iB-17@gated-at.bofh.it>
2006-07-22 16:59 ` Bodo Eggert
2006-07-22 18:13 ` Joshua Hudson
2006-07-24 6:45 ` Nikita Danilov
2006-07-24 7:25 ` Valdis.Kletnieks
2006-07-24 16:21 ` Joshua Hudson
2006-07-24 17:55 ` Horst H. von Brand
2006-07-24 18:22 ` Valdis.Kletnieks
2006-07-25 4:49 ` Joshua Hudson [this message]
2006-07-25 12:43 ` Valdis.Kletnieks
2006-07-25 14:47 ` Horst H. von Brand
2006-07-23 2:19 ` Horst H. von Brand
2006-07-23 22:27 ` Vernon Mauery
2006-07-25 23:43 ` Peter Chubb
[not found] <6CcT1-1lH-39@gated-at.bofh.it>
[not found] ` <6Cwov-5xl-5@gated-at.bofh.it>
2006-07-25 21:28 ` Bodo Eggert
2006-07-26 1:00 ` Horst H. von Brand
2006-07-26 9:13 ` Bodo Eggert
2006-07-21 1:04 Joshua Hudson
2006-07-21 18:49 ` Horst H. von Brand
2006-07-21 20:28 ` Rob Sims
2006-07-21 21:57 ` Joshua Hudson
2006-07-24 6:42 ` Nikita Danilov
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=bda6d13a0607242149j4f1492ag47bd8e3e1f0607da@mail.gmail.com \
--to=joshudson@gmail.com \
--cc=linux-kernel@vger.kernel.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
all inboxes | Powered by JetHome®