From: Hans Reiser <reiser@namesys.com>
To: Peter Foldiak <Peter.Foldiak@st-andrews.ac.uk>
Cc: reiserfs-list@namesys.com, linux-kernel@vger.kernel.org
Subject: Re: file as a directory
Date: Tue, 14 Dec 2004 09:24:12 -0800 [thread overview]
Message-ID: <41BF21BC.1020809@namesys.com> (raw)
In-Reply-To: <1103043518.21728.159.camel@pear.st-and.ac.uk>
Peter, I think you are right, though it might be useful to have the
default be dirname/..../glued and to allow users to link
dirname/..../filebody to
dirname/..../something_else_if_they_want_it_to_not_be_glued, and to have
dirname/..../filebody or whatever it is linked to be what they get if
they read the directory as a file.
Hans
Peter Foldiak wrote:
>Hans,
>Following the recent discussions on the lists on "file as directory", I
>re-read part of your http://www.namesys.com/v4/v4.html paper (in
>sections near "Aggregating Files Can Improve The User Interface To
>Them") and realised that you have discussed this issue in quite a lot of
>detail already there (see copied below). (Strange though that nobody
>referred to it in the discussion! People don't seem to be very good at
>reading (and that seems to include me)).
>
>It looks to me that the "file as directory" and "directory as file"
>issues are almost identical. What you are saying is that you could
>automatically aggregate files in a directory to look like a single file
>(you give the example of the /etc/passwd file). I was saying that you
>could make a file look like a directory.
>Perhaps a better way to think about this is that instead of talking
>about directories and files, we just talk about objects. Each object
>would have file-type access methods and directory-type access methods.
>This has some implications for the syntax. You (in v4.html) suggest
>using the /.glued syntax:
>
>/new_syntax_access_path/big_directory_of_small_files/.glued
>
>I think the "object" philosophy would rather imply that the object (or
>directory) should have a default glueing method, so when you access the
>directory as a file (using read(), for instance)
>
>/new_syntax_access_path/big_directory_of_small_files
>
>would automatically give you the glued file (without having to add the
>.glued !) and when you access it as a directory (using readdir(), for
>instance), you would get the components listed as a directory.
>(I am not sure whether the access method, e.g. read() vs. readdir() is
>sufficient to distinguish the meaning. Another way may be putting a "/"
>after the objectname to indicate that you want it as a directory.)
>
>If we do this, the applications don't need to know whether they are
>dealing with an object consisting of small files, aggregated, or whether
>they are looking at a big file with some way of accessing their parts.
>If an old application (or user) looks for the /etc/passwd file, it will
>still get what it expects without having to know that the file is an
>aggregate.
>
>In fact, from the point of view of the file system, it doesn't make much
>of a difference, in both cases they map names to keys. The only
>difference (as far as I can see) is whether metadata is stored
>separately for each component or only once for the objcts.
>
>If you store metadata only once, then a component could inherit metadata
>(such as modification date) from the parent. There should be some way of
>telling the file system which bits need their own metadata. But the way
>of telling the file system this probably should not be mixed up with the
>file naming.
>
>There may be some complications with some parts of files being linked to
>a different number of times, so if you remove a hard link from the whole
>file, should a component linked from elsewhere be kept or deleted.
>
>Do you think we could leave off the ./glued bit? Would it break too many
>things?
>
> Peter
>
>In http://www.namesys.com/v4/v4.html Hans Reiser wrote:
>
>
>>...
>>Aggregating Files Can Improve The User Interface To Them
>>Consider the use of emacs on a collection of a thousand small 8-32
>>
>>
>byte
>
>
>>files like you might have if you deconstructed /etc/passwd into small
>>files with separable acls for every field. It is more convenient in
>>screen real estate, buffer management, and other user interface
>>considerations, to operate on them as an aggregation all placed into a
>>single buffer rather than as a thousand 8-32 byte buffers.
>>
>>
>>How Do We Write Modifications To An Aggregation
>>Suppose we create a plugin that aggregates all of the files in a
>>directory into a single stream. How does one handle writes to that
>>aggregation that change the length of the components of that
>>aggregation?
>>
>>Richard Stallman pointed out to me that if we separate the aggregated
>>files with delimiters, then emacs need not be changed at all to
>>
>>
>acquire
>
>
>>an effective interface for large numbers of small files accessed via
>>
>>
>an
>
>
>>aggregation plugin. If
>>/new_syntax_access_path/big_directory_of_small_files/.glued is a
>>
>>
>plugin
>
>
>>that aggregates every file in big_directory_of_small_files with a
>>delimiter separating every file within the aggregation, then one can
>>simply type emacs
>>/new_syntax_access_path/big_directory_of_small_files/.glued, and the
>>filesystem has done all the work emacs needs to be effective at this.
>>Not a line of emacs needs to be changed.
>>
>>One needs to be able to choose different delimiting syntax for
>>
>>
>different
>
>
>>aggregation plugins so that one can, for say the passwd file,
>>
>>
>aggregate
>
>
>>subdirectories into lines, and files within those subdirectories into
>>colon separate fields within the line. XML would benefit from yet
>>
>>
>other
>
>
>>delimiter construction rules. (We have been told by Philipp Guehring
>>
>>
>of
>
>
>>LivingXML.NET that ReiserFS is higher performance than any database
>>
>>
>for
>
>
>>storing XML, so this issue is not purely theoretical.)
>>
>>
>>Aggregation Is Best Implemented As Inheritance
>>In summary, to be able to achieve precision in security we need to
>>
>>
>have
>
>
>>inheritance with specifiable delimiters and we need whole file
>>inheritance to support ACLs.
>>
>>
>>One Plugin Using Delimiters That Resemble sys_reiser4() Syntax
>>We provide the infrastructure for your constructing plugins that
>>implement arbitrary processing of writes to inheriting files, but we
>>also supply one generic inheriting file plugin that intentionally uses
>>delimiters very close to the sys_reiser4() syntax. We will document
>>
>>
>the
>
>
>>syntax more fully when that code is working, for now syntax details
>>
>>
>are
>
>
>>in the comments in the file invert.c in the source code. ...
>>
>>
>
>
>
>
>
next prev parent reply other threads:[~2004-12-14 17:24 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-22 13:54 file as a directory Amit Gud
2004-11-22 14:37 ` Martin Waitz
2004-11-22 15:34 ` Zan Lynx
2004-11-22 17:18 ` Martin Waitz
2004-11-22 18:16 ` Jan Engelhardt
2004-11-22 14:38 ` Al Viro
2004-11-22 15:04 ` Helge Hafting
2004-11-22 17:15 ` Tomas Carnecky
2004-11-22 18:48 ` Hans Reiser
2004-11-24 9:16 ` Peter Foldiak
2004-11-24 14:05 ` Jan Engelhardt
2004-11-24 15:02 ` Paolo Ciarrocchi
2004-11-24 15:25 ` Peter Foldiak
2004-11-26 16:13 ` Hans Reiser
2004-11-24 16:11 ` Christian Mayrhuber
2004-11-25 10:50 ` Peter Foldiak
2004-11-26 18:19 ` Hans Reiser
2004-11-26 21:13 ` Christian Mayrhuber
2004-11-27 11:09 ` Peter Foldiak
2004-11-27 13:14 ` Christian Mayrhuber
2004-11-29 21:20 ` Horst von Brand
2004-11-29 22:59 ` Peter Foldiak
2004-11-29 23:35 ` Kevin Fox
2004-11-30 8:54 ` Peter Foldiak
2004-11-30 16:28 ` Kevin Fox
2004-11-30 16:42 ` Jan Engelhardt
2004-11-30 17:35 ` Jesse Pollard
2004-11-30 17:49 ` Jan Engelhardt
2004-11-30 18:26 ` Amit Gud
2004-11-30 18:39 ` Jan Engelhardt
2004-12-01 2:44 ` Scott Young
2004-12-03 9:58 ` Amit Gud
2004-11-30 14:51 ` Horst von Brand
2004-11-30 15:29 ` Peter Foldiak
2004-11-30 16:31 ` Horst von Brand
2004-11-30 17:03 ` Hans Reiser
2004-12-14 16:58 ` Peter Foldiak
2004-12-14 17:21 ` Jan Engelhardt
2004-12-14 18:11 ` Peter Foldiak
2004-12-14 18:16 ` Jan Engelhardt
2004-12-14 17:24 ` Hans Reiser [this message]
2004-12-14 21:27 ` Peter Foldiak
2004-12-15 4:47 ` David Masover
2004-12-15 5:28 ` Hans Reiser
2004-12-16 0:16 ` David Masover
2004-12-16 18:52 ` Hans Reiser
2004-12-17 15:58 ` David Masover
2004-12-17 16:52 ` Hans Reiser
2004-12-18 1:52 ` Horst von Brand
2004-12-20 17:21 ` Hans Reiser
2004-12-21 3:40 ` Alexander G. M. Smith
2004-12-21 5:31 ` David Masover
2004-12-21 13:16 ` Alexander G. M. Smith
2004-12-21 16:29 ` Horst von Brand
2004-12-22 0:47 ` Alexander G. M. Smith
2004-12-15 9:27 ` Peter Foldiak
2004-12-15 23:56 ` David Masover
2004-12-16 18:48 ` Hans Reiser
2004-12-16 19:01 ` Peter Foldiak
2004-12-17 18:09 ` Hans Reiser
2004-12-18 0:20 ` David Masover
2004-12-17 16:02 ` David Masover
2004-12-17 16:54 ` Hans Reiser
2004-12-15 5:19 ` Hans Reiser
2004-12-14 19:30 ` Horst von Brand
2004-12-15 4:52 ` David Masover
2004-12-15 5:31 ` Hans Reiser
2004-12-15 5:10 ` Hans Reiser
2004-12-15 13:28 ` Horst von Brand
2004-12-15 16:57 ` Hans Reiser
2004-12-15 19:11 ` mjt
2004-12-15 19:11 ` Markus Törnqvist
2004-12-15 20:57 ` Hans Reiser
2004-11-30 17:03 ` Peter Foldiak
2004-11-30 17:50 ` Horst von Brand
2004-11-30 18:23 ` Dr. Giovanni A. Orlando
2004-11-29 23:11 ` Peter Foldiak
2004-11-30 5:53 ` prymitive
2004-11-30 16:04 ` Martin Waitz
2004-11-27 12:49 ` mjt
2004-11-27 12:49 ` Markus Törnqvist
2004-11-29 15:41 ` Hans Reiser
2004-11-26 17:43 ` Hans Reiser
2004-11-27 11:50 ` Tomasz Torcz
2005-05-10 9:39 ` Peter Foldiak
2005-05-10 14:53 ` Hans Reiser
2005-05-10 15:32 ` Peter Foldiak
2005-05-10 16:30 ` Sean McGrath
2005-05-10 17:25 ` Hans Reiser
2005-05-10 17:39 ` Sean McGrath
2005-05-10 18:52 ` Hans Reiser
2005-05-10 19:39 ` Sean McGrath
2005-05-10 20:11 ` Hans Reiser
2005-05-16 12:32 ` Leo Comerford
2005-05-17 1:25 ` Alexander G. M. Smith
2005-05-17 22:51 ` David Masover
2005-05-17 23:57 ` Alexander G. M. Smith
2005-05-18 11:46 ` Leo Comerford
2005-05-18 11:50 ` Leo Comerford
2005-05-10 15:14 ` Valdis.Kletnieks
2005-05-10 15:38 ` Peter Foldiak
2005-05-10 17:20 ` Hans Reiser
2005-05-11 10:23 ` Helge Hafting
2004-11-23 6:20 ` Amit Gud
2004-11-24 10:32 ` Helge Hafting
2004-11-24 11:07 ` Amit Gud
2004-11-25 23:09 ` Pavel Machek
2004-11-28 18:53 ` Helge Hafting
2004-11-28 19:01 ` Pavel Machek
2004-11-22 17:59 ` Valdis.Kletnieks
2004-11-22 18:24 ` Jan Engelhardt
2004-11-22 18:24 ` Jan Engelhardt
2004-11-22 18:52 ` Hans Reiser
2004-11-22 19:05 ` Jan Engelhardt
2004-11-23 9:46 ` Amit Gud
2004-11-23 14:00 ` Jan Engelhardt
2004-11-23 14:17 ` Amit Gud
2004-11-23 9:11 ` Dirk Steinberg
2004-11-23 9:37 ` mjt
2004-11-23 9:37 ` Markus Törnqvist
2004-11-23 19:00 ` Hans Reiser
[not found] <fa.imi6gu8.1e7qkqc@ifi.uio.no>
[not found] ` <fa.hcr9rb0.k6egam@ifi.uio.no>
2004-11-26 4:11 ` Bodo Eggert
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=41BF21BC.1020809@namesys.com \
--to=reiser@namesys.com \
--cc=Peter.Foldiak@st-andrews.ac.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=reiserfs-list@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.