From: Hans Reiser <reiser@namesys.com>
To: Daniel Phillips <phillips@bonn-fries.net>
Cc: linux-kernel@vger.kernel.org, reiserfs-dev@namesys.com,
ramon@thebsh.namesys.com, yura@namesys.com
Subject: Re: [reiserfs-dev] Re: Ext2 directory index: ALS paper and benchmarks
Date: Fri, 07 Dec 2001 03:13:44 +0300 [thread overview]
Message-ID: <3C1009B8.8080300@namesys.com> (raw)
In-Reply-To: <E16BjYc-0000hS-00@starship.berlin> <E16Bppx-0000mN-00@starship.berlin> <3C0F7659.1090701@namesys.com> <E16C2EN-0000pz-00@starship.berlin>
Daniel Phillips wrote:
>On December 6, 2001 02:44 pm, Hans Reiser wrote:
>
>>Daniel Phillips wrote:
>>
>>>On December 6, 2001 04:56 am, Hans Reiser wrote:
>>>
>>>>>On December 6, 2001 04:41 am, you wrote:
>>>>>
>>>>>>ReiserFS is an Htree by your definition in your paper, yes?
>>>>>>
>>>>>You've got a hash-keyed b*tree over there. The htree is fixed depth.
>>>>>
>>>>B*trees are fixed depth. B-tree usually means height-balanced.
>>>>
>>>I was relying on definitions like this:
>>>
>>> B*-tree
>>>
>>> (data structure)
>>>
>>> Definition: A B-tree in which nodes are kept 2/3 full by redistributing
>>> keys to fill two child nodes, then splitting them into three nodes.
>>>
>>This is the strangest definition I have read. Where'd you get it?
>>
>>
>
>This came from:
>
> http://www.nist.gov/dads/HTML/bstartree.html
>
>Here's another, referring to Knuth's original description:
>
> http://www.cise.ufl.edu/~jhammer/classes/b_star.html
>
Hmmmm, the definition I think I remember came I think from Wood's book
on Algorithms, and unfortunately it disappeared from my office some time
ago.
My memory was that a B*-tree handles variable length records. It seems
I am wrong though. Dear. I'd better go tell the tech writer.
ReiserFS is a B*-tree by both definitions though. (Convenient at the
moment:-) )
>
>
>>>To tell the truth, I haven't read your code that closely, sorry, but I got
>>>the impression that you're doing rotations for balancing no? If not then
>>>
>>What are rotations?
>>
>
>Re-rooting a (sub)tree to balance it. <Pulls Knuth down from shelf>
>For a BTree, rotating means shifting keys between siblings rather than
>re-parenting. (The latter would change the path lengths and the result
>wouldn't be a BTree.)
>
>So getting back to your earlier remark, when examined under a bright light,
>an HTree looks quite a lot like a BTree, the principal difference being the
>hash and consequent collision handling. An HTree is therefore a BTree with
>wrinkles.
>
Hmmm, well we do hashes too. But I see your hash collision handling
resembles (but with some interesting improvements) something once
suggested by one of my programmers. What happens when you have two
collisions in one node, and then you delete one colliding name? Do you
leak collision bits?
When you rehash a large directory, is there a brief service interruption?
>
>
><reads more> But wait, you store references to objects along with keys, I
>don't. So where does that leave us?
>
>By the way, how do you handle collisions? I see it has something to do with
>generation numbers, but I haven't fully decoded the algorithm.
>
>Fully understanding your code is going to take some time. This would
>go faster if I could find the papers mentioned in the comments, can you point
>me at those?
>
Which papers in which comments?
>
>
>--
>Daniel
>
>
>
Yura, can you run some benchmarks on this code?
next prev parent reply other threads:[~2001-12-07 0:16 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-12-05 21:26 Ext2 directory index: ALS paper and benchmarks Daniel Phillips
2001-12-06 3:41 ` Hans Reiser
2001-12-06 3:54 ` Daniel Phillips
2001-12-06 3:56 ` Hans Reiser
2001-12-06 4:08 ` Daniel Phillips
2001-12-06 13:44 ` Hans Reiser
2001-12-06 17:22 ` Daniel Phillips
2001-12-07 0:13 ` Hans Reiser [this message]
2001-12-07 4:39 ` [reiserfs-dev] " Daniel Phillips
2001-12-07 12:36 ` Hans Reiser
2001-12-07 14:35 ` Daniel Phillips
2001-12-07 20:16 ` Hans Reiser
2001-12-06 11:27 ` Ragnar Kjørstad
2001-12-07 15:51 ` Daniel Phillips
2001-12-07 16:47 ` Ragnar Kjørstad
2001-12-07 17:41 ` Daniel Phillips
2001-12-07 18:03 ` Ragnar Kjørstad
2001-12-07 18:18 ` Daniel Phillips
2001-12-07 21:10 ` Hans Reiser
2001-12-07 21:12 ` Hans Reiser
2001-12-07 18:32 ` Andrew Morton
2001-12-07 19:46 ` Daniel Phillips
2001-12-07 20:00 ` Andrew Morton
2001-12-08 7:19 ` Linus Torvalds
2001-12-08 17:32 ` Daniel Phillips
2001-12-08 17:54 ` Jeff Garzik
2001-12-09 3:27 ` Daniel Phillips
2001-12-09 4:19 ` Linus Torvalds
2001-12-09 16:29 ` Alan Cox
2001-12-09 20:13 ` Daniel Phillips
2001-12-10 6:27 ` Linus Torvalds
2001-12-10 6:49 ` Alexander Viro
2001-12-10 8:32 ` Alan Cox
2001-12-10 16:14 ` Daniel Phillips
2001-12-08 20:28 ` Hans Reiser
2001-12-08 21:10 ` Ragnar Kjørstad
2001-12-07 21:01 ` Hans Reiser
2001-12-07 22:56 ` Ragnar Kjørstad
2001-12-08 0:15 ` Hans Reiser
2001-12-08 19:16 ` Ragnar Kjørstad
2001-12-08 19:55 ` Hans Reiser
2001-12-09 2:47 ` Daniel Phillips
2001-12-09 2:39 ` Daniel Phillips
2001-12-08 18:02 ` Jeremy Fitzhardinge
2001-12-09 2:24 ` Daniel Phillips
2001-12-07 3:19 ` Cameron Simpson
2001-12-07 10:54 ` Hans Reiser
2001-12-07 14:53 ` Daniel Phillips
2001-12-07 20:33 ` Hans Reiser
2001-12-07 13:06 ` [reiserfs-dev] " Ragnar Kjørstad
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=3C1009B8.8080300@namesys.com \
--to=reiser@namesys.com \
--cc=linux-kernel@vger.kernel.org \
--cc=phillips@bonn-fries.net \
--cc=ramon@thebsh.namesys.com \
--cc=reiserfs-dev@namesys.com \
--cc=yura@namesys.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