From: Nate Diller <ndiller@namesys.com>
To: Jagannadha Bhattu <jagannadha.bhattu@gmail.com>
Cc: reiserfs-list@namesys.com, Vladimir Saveliev <vs@namesys.com>
Subject: Re: Novice question
Date: Wed, 06 Apr 2005 14:40:57 -0700 [thread overview]
Message-ID: <42545769.8000804@namesys.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 676 bytes --]
Hi Jagannadha
I understand that the terminology in Reiser4 is rather difficult to
understand, even when you are reading the source code and comments. A
while ago I put together a glossary of terms which is still very much a
work in progress. I have included the latest version of it, in case you
find it helpful. If you or someone else on this list has additions or
corrections, feel free to let me know. I guess eventually we should
post this to the web site too...
heh, I just read through it again and it's more rough and incomplete
than I thought. Maybe some of the guys who know this code better could
answer some of the outstanding questions in it?
NATE
[-- Attachment #2: reiser4glossary --]
[-- Type: text/plain, Size: 3754 bytes --]
Reiser4 Glossary
Node: Implemented as a file system block, the basic unit for the tree. On x86, a node is 4KiB in size, however, there is no restriction
on it's size (is that true?), and there is no design restriction enforcing fixed-size nodes. Each node has
a search plugin, so that node layouts are not written into the reiser4 spec. *Compression can occur for unformatted nodes? How? I had
assumed it was done item-by-item as part of the item plugin. Encryption too? @#$% Ok, they also appear to have their own search
methods too, even though all they have to do is find the item and invoke it's plugin. What does an unformatted node's search plugin do?*
Object: A logical entity at the semantic layer, such as a file or a directory. This can be split into multiple pieces in the tree, as
determined by the storage layer, however, at the semantic layer, an object acts as though it is a single unified entity. Each object has
a semantic plugin, such as a file or directory plugin (or both???), controlling how it is manipulated. Objects are connected to each
other by directories, to form a graph. *Is this entirely accurate? Directories are mappings, and a mapping is more specific than the
vertex of a graph. Even for a directed graph, there is no name to any vertex. Also, what about lists? Could a directory plugin be
written that has list semantics, including insert/delete, and ranges?*
Item: The container object for the storage layer, it cannot span nodes. In practice, they only hold data from one object, but the spec
does not limit items in this way. Items can grow or shrink as necessary, and may be split or joined, but all of this behavior is
governed by the item plugin, not the tree's balancing code. {Does the item plugin do anything other than balancing?}
Unit: An indivisible piece of information. A unit is a construct of a particular item plugin, so the balancing code never deals with
units directly, only that item's plugin does. Nor is an item required to implement this, it could simply declare itself indivisible,
however, since items cannot span nodes, this would limit the size of it's contents.
Key: Every item has exactly one key, which is it's non-unique identifier within the tree. When the semantic layer wants to store data,
it asks the key assignment plugin for a key, and then invokes the storage layer to associate the data with that key. Likewise to
retrieve data, the semantic layer gets the key it needs from supplying the key assignment plugin with the identifying information that
was supplied at creation time, and the appropriate key is generated. The only function that might ever change the key for any data is a
repacker function, not yet written, that optimizes file placement in the tree (not just on disk, but tree locality). The default
plugin's key is composed of two parts. The first part references an object by it's objectID, and the second part an offset within that
object. *How are these parts distinguished? If the second half of the key is an offset, then files must be stored contiguously (in tree
order, and in disk order if the repacker has finished). How can the second part refer to an offset if an object can have data added
or removed from the middle?*
ObjectID: The unique identifier for each object.
File: The file object is a sequence of bytes, manipulated by it's plugin methods. The file plugin is specified by the stat data object
which also holds other file metadata.
Directory: Directory objects map a set of strings (names) to their corresponding objectID(?). The hash plugin is specified per
directory plugin. *Any connection with files (duality)? How does the item plugin associated with entries know how to balance them?*
next reply other threads:[~2005-04-06 21:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-06 21:40 Nate Diller [this message]
2005-04-06 22:07 ` Novice question Nikita Danilov
2005-04-07 7:12 ` Vladimir Saveliev
-- strict thread matches above, loose matches on Subject: below --
2005-04-06 13:19 Jagannadha Bhattu
2005-04-06 14:58 ` Vladimir Saveliev
2005-04-07 5:49 ` Hans Reiser
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=42545769.8000804@namesys.com \
--to=ndiller@namesys.com \
--cc=jagannadha.bhattu@gmail.com \
--cc=reiserfs-list@namesys.com \
--cc=vs@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 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.