LWN.net Logo

On reiserfs and external attributes

The patch seemed relatively straightforward; Chris Mason had sent out a set of reiserfs changes which include data=journal support, an improved block allocator, metadata readahead, and external attribute support. One of those changes, however, does not sit well with Hans Reiser, the original creator of reiserfs.

External attributes are just a way of attaching extra metadata to files; they are used for things like access control lists and SELinux context information. Most of the standard Linux filesystems support external attributes in 2.6, but reiserfs does not yet have that capability. Given that features like SELinux will not work without external attributes, adding this capability has been high on the wish lists of many users and developers.

When the external attribute patch was posted, however, Hans Reiser sent out a protest asking that the patch not be applied. Those who have followed Hans's work over the years will know what his objection is: external attributes live in their own name space. Hans has dedicated much effort to the task of moving everything into the filesystem name space; he says:

The expressive power of an operating system is NOT proportional to the number of components, but instead is proportional to the number of possible connections between its components. If you fragment the namespaces of an OS, you reduce each component to effective interactions with only those components in its reduced size namespace. Designing the namespaces of an OS so that they possess closure and are unified may seem like a lot of effort, but it is very cost effective compared to building many times more other OS components to get the same expressive power.

The upcoming Reiser4 filesystem implements Hans's vision of how external attributes should be implemented; essentially, each attribute just looks like a small file containing the attribute value. The solution is fast and elegant; it may well be the way things are done in the future. For the moment, however, there are a few problems:

  • Reiser4 is still in beta testing, and has not yet been submitted for inclusion into the 2.6 kernel. Once it is submitted, it is not certain that it will be accepted quickly.

  • The Reiser4 external attribute API is different from the API used in the 2.6 kernel. Applications, to use this API, will have to be rewritten to use the special-purpose reiser4() system call.

  • Some users of reiserfs ("Reiser3") might be a little nervous about making an immediate jump to a completely new filesystem. They just might want to be able to continue using their existing filesystems and, simultaneously, make use of external attributes.

The solution seems reasonably clear: Reiser4, once it's ready, can be merged with its new ways of doing things. The existing reiserfs filesystem, meanwhile, can be augmented with the capabilities that its users would like to have now. This approach would seem to offer the best of both worlds. Mr. Reiser disagrees; he would rather not have (what he sees as) an inelegant hack grafted onto reiserfs to satisfy immediate needs. When code is released as free software, however, not even its creator can prevent its development in certain directions if that's what its users want.


(Log in to post comments)

A small termnology fix...

Posted Apr 29, 2004 5:59 UTC (Thu) by mkerrisk (subscriber, #1978) [Link]

^external attributes^extended attributes

On reiserfs and external attributes

Posted Apr 29, 2004 6:16 UTC (Thu) by dlang (✭ supporter ✭, #313) [Link]

In Linux development the maintainer doesn't have nearly as much control as many of them would like to think they do.

being a maintainer gives you the right to make suggestions and incoporate other peoples code, it doesn't give you the right to say 'this code will never go into the kernel' becouse Linus always maintains the right to change anything he thinks needs to be changed, and if a maintainer is on the wrong side of this decision to many times the maintainer changes, either voluntarily as the old maintainer gives up (stomps away indiscust, etc) of involuntarily as Linus accepts more and more patches from the new guy until the old maintainers patches no longer apply to the kernel.

it's happened before and it will happen again

On reiserfs and external attributes

Posted Apr 29, 2004 13:47 UTC (Thu) by jeremiah (subscriber, #1221) [Link]

If I'm not mistaken, didn't Hans stir things up when he first came out with riserfs and tried to get it included in the kernel. Sort of upseting a lot of people. He's like the RMS of filesystems. Briliant, but inflexible.


On reiserfs and external attributes

Posted Apr 29, 2004 19:17 UTC (Thu) by erwbgy (subscriber, #4104) [Link]

That's hardly fair. Here is an excerpt from what he said [1]:

"Not sure you want to ship a 3.0 without it. It is 50-150% faster than
V3, which makes it a significant competitive advantage. I forget how
much faster writes are, something well over 100% faster, and the newest
version is faster yet.

How do I put it. I'm the last straggler coming back from the hunt, and
I've got what looks like it might be a wooly mammoth on my shoulders,
and my tribesmen are complaining that I'm late for dinner. How about
helping me by cutting down a tree for the roasting spit instead? Think
thoughts of the poor hungry Microsoft tribe eating NTFS.
...
Oh, and it has features too, not just performance..."

Yes, there was lengthy discussion and some disagreement about including
Reiser4 in the 2.6 kernel (which some thought would be 3.0), but it was
not an unreasonable request, and eventually got included on merit.

I've always liked that "straggler coming back from the hunt" metaphor :-)

[1] http://www.uwsg.iu.edu/hypermail/linux/kernel/0210.3/0603.html

On reiserfs and external attributes

Posted May 24, 2004 21:40 UTC (Mon) by smurf (subscriber, #17840) [Link]

Ouch. You can't have a more than 100% faster write -- it would complete before it's issued. ;-) (Yeah, I know, he probably meant >50%, i.e. that v3 is 100% slower than v4. I freely admit that nitpicking is fun.)

That being said, most programs could care less about which file system they're running on. Thus, uniformity of features is somewhat more important than purity.

On reiserfs and external attributes

Posted May 7, 2004 17:59 UTC (Fri) by nobrowser (guest, #21196) [Link]

> The Reiser4 external attribute API is different from the API used in the 2.6 kernel. Applications, to use this API, will have to be rewritten to use the special-purpose reiser4() system call.

> The solution seems reasonably clear: Reiser4, once it's ready, can be merged with its new ways of doing things.


I don't understand how these two excerpts can be reconciled. Surely reiser4(), a hack specific to a single filesystem, is not "the new way of doing things"?

I respect Mr. Reisers work, but I have the slight feeling he's promoting his
baby at the expense of Linux as a whole in this matter.

Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds