9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Giacomo Tesio <giacomo@tesio.it>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] wstat and atomic directory change
Date: Wed,  4 Feb 2015 22:24:59 +0100	[thread overview]
Message-ID: <CAHL7psFpygA_2DML6Y6reZod-y+ERkRgWmB0K79jc_JdzfmHww@mail.gmail.com> (raw)
In-Reply-To: <485ffa6d8f530b309097560ab32bb43d@lilly.quanstro.net>

[-- Attachment #1: Type: text/plain, Size: 2754 bytes --]

Useless? No I did not mean this.
(and sorry, I wasn't in any way sarcastic, I'm just trying to understand
9p's design a bit deeper)
I mean that to realize a truly uniform interface, directories should be
writable with Twrite, so that we would not need messages like Tcreate and
Tremove (and possibly Twstat) and Tstat would just be an efficient shortcut
(like it actually already is, since we can obtain the same info reading the
parent directory).

We could add a file by appending a stat entry to the parent directory and
we could remove it by removing such entry. We could modify permissions,
names and so on overwriting the entry.
The problem would be: how to do such basic operations atomically and
concurrently?

That's why (I suppose) we have Tcreate, Tremove and Twstat. For praticality.
But why we don't have Tmove for example?

Probably the answer is in the distributed nature of Plan 9: as you said,
namespaces would be at odds with such a message, complicating the library
functions.
However having to read and write a 10 GB file one msize after the other
just to change its directory looks a bit costly, if both the origin and the
destinations are in the same phisical disk.
Moreover (if I've understood properly the protocol) to move a 10 GB file
between two directories on a disk, you should have 10 GB free on that disk!

All this reflections arise from the search for an orthodox way to change
the tree structure of a synthetic filesystem.
Moving large real files is not my actual issue here. I'm wondering for a
synthetic filesystem in which, when you move a folder in a special
directory, something magic happens.
As far as I can see, it is not possible with a 9p2000 fileservice, is it?


Giacomo


2015-02-04 20:23 GMT+01:00 erik quanstrom <quanstro@quanstro.net>:

> > you can consider doing it out of band; e.g. a new fossil console command.
> > On Wed, Feb 4, 2015 at 6:30 AM Giacomo Tesio <giacomo@tesio.it> wrote:
> >
> > > And unfortunately I cannot figure out any alternative, either. :-(
> > >
> > > An interesting point is: why directory entries can be read but cannot
> be
> > > written? I mean we use Tcreate to create a new file in a dir, while to
> be
> > > uniform with files, we should use a Twrite, appending a corresponding
> stat
> > > structure at the end of a directory entry.
> > >
> > > However this solution probably has not been adopted to enable safe
> > > concurrency in the file creation and removal.
> > >
> > > However this asymmetry shows that directories cannot be (pratically)
> > > handled in the same way of files.
>
> right.  directories are not the same as files.  you're right that reading a
> directory is useless.
>
> - erik
>
>

[-- Attachment #2: Type: text/html, Size: 3345 bytes --]

  reply	other threads:[~2015-02-04 21:24 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-30 11:21 Giacomo Tesio
2015-01-30 14:13 ` erik quanstrom
2015-01-30 15:59   ` Giacomo Tesio
2015-01-30 20:19     ` Joel C. Salomon
2015-01-30 22:49     ` Anthony Sorace
2015-02-03  8:53       ` Giacomo Tesio
2015-02-03  9:04         ` Quintile
2015-02-04  3:51           ` erik quanstrom
2015-02-04  8:28             ` Giacomo Tesio
2015-02-04 14:06               ` erik quanstrom
2015-02-04 14:29                 ` Giacomo Tesio
2015-02-04 16:30                   ` Skip Tavakkolian
2015-02-04 19:23                     ` erik quanstrom
2015-02-04 21:24                       ` Giacomo Tesio [this message]
2015-02-05  4:13                         ` lucio
2015-02-05  8:21                           ` Giacomo Tesio
2015-02-05  8:37                             ` Giacomo Tesio
2015-02-05  8:59                               ` lucio
2015-02-05  8:54                             ` lucio
2015-02-05 16:13                               ` erik quanstrom
2015-02-05  4:15                         ` lucio
2015-02-05 16:20                         ` erik quanstrom
2015-02-05 16:46                           ` Giacomo Tesio
2015-02-05 17:22                             ` Skip Tavakkolian
2015-02-05 17:20                           ` Bakul Shah
2015-02-05  4:26 sl
2015-02-05  4:26 sl
2015-02-05  8:08 ` Giacomo Tesio

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=CAHL7psFpygA_2DML6Y6reZod-y+ERkRgWmB0K79jc_JdzfmHww@mail.gmail.com \
    --to=giacomo@tesio.it \
    --cc=9fans@9fans.net \
    /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;
as well as URLs for NNTP newsgroup(s).