9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Richard Uhtenwoldt <greon@best.com>
To: 9fans@cse.psu.edu
Subject: [9fans] rewriting paths [was: mv vs cp]
Date: Mon,  8 Oct 2001 10:43:04 -0700	[thread overview]
Message-ID: <E15qeQi-0007p8-00@localhost> (raw)
In-Reply-To: <20011007162401.77DEE1998A@mail.cse.psu.edu>

I was thinking about this in the bathtub just now.  One could interpose
a filesystem between the user and kfs --or wherever one's files are
really stored-- called renamefs, which rewrites paths before forwarding
them to kfs.  9P requests do not really contain paths, but you get the
idea: the new file server, renamefs, maintains a rewrite table
containing the paths specified by past move commands (2 paths per move
command to be precise).  This state is used to rewrite certain 9P
requests (eg, some walk requests) before relaying them to the 
server that really stores files.

To increase the usefulness of renamefs, we allow it to store 2 types of
records.  Specifically, a record can take the form

  D<path>

, which means that the string <path> "no longer lives here"
(ie, renamefs will act as if <path> does not exist), or it can
take the form

  A<path><path2>

, which means that <path2> will get rewritten as <path> and does not
carry the implication that <path> no longer lives here.  (Yes, yes, I
know: between <path> and <path2> you need some lexeme that does not
occur in paths.)

Then,

  Mv <path> <path2> 

can be implemented by adding two records, A<path><path2> and D<path>, and
something resembling Unix's

  Ln -s <path> <path2>

is implementable by adding one record, A<path><path2>, to the rewrite
table inside renamefs.  The main socioeconomic purpose of these features
is to make Unix users feel more at home by providing means to move
directories, means to do inter-directory moves and symlinks.  Moreover,

  Del <path>

which just adds D<path> to the rewrite table, is a delete that supports
undelete (via removal of the D record).  And resource forks can be
implemented via ... --Just kidding.

No need to modify 9P of course: just have renamefs listen on a specific
file like /foo/rename where foo might be mnt (sorry for my unfamiliarity
with Plan9 file naming conventions) and have mv write requests
(candidates already in the form of strings for entry into the rewrite
table) to /foo/rename (rather than having mv send rename or copy and
delete requests like it does now).

When everyone is sleeping, or when the user says so, renamefs can empty
the rewrite table by actually copying and deleting files in the
underlying filesystem.  Call this operation "update".

There are multiple ways I'm sure to create pathological situations with
renamefs, and I do not know enough about Plan 9 to address them, except
to point out that one way to recover from pathology --assuming the
update operation has not run yet-- is simply to delete the rewrite table
via, eg, echo clear >>/foo/rename or, if the namespace is so screwed up
that that impossible, to reboot without mounting renamefs.

Advantages of my design:

Users who do not need the functionality do not pay any cost: the code
for renamefs and it's clients (eg, the new mv command) lie dormant on
the hard drive where they cannot cause problems.  No modification
of extant code is required.

Makes Plan 9 look more like Unix for those who want want that sort
of thing, and yes I hear loud and clear that many here do not.



  parent reply	other threads:[~2001-10-08 17:43 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-07 16:23 [9fans] mv vs cp jmk
2001-10-08  4:28 ` Lucio De Re
2001-10-08  4:49   ` Alexander Viro
2001-10-08  6:10     ` George Michaelson
2001-10-08  6:34       ` Alexander Viro
2001-10-08  6:49         ` George Michaelson
2001-10-08  7:00           ` Lucio De Re
2001-10-08  7:13             ` George Michaelson
2001-10-08  7:44               ` Alexander Viro
2001-10-08  7:28             ` Alexander Viro
2001-10-08  6:54       ` Lucio De Re
2001-10-08  7:10         ` George Michaelson
2001-10-08  8:28           ` Lucio De Re
2001-10-08  9:51     ` Thomas Bushnell, BSG
2001-10-08 10:30       ` Alexander Viro
2001-10-09  9:03         ` Thomas Bushnell, BSG
2001-10-09  9:33           ` Alexander Viro
2001-10-09 15:58             ` Thomas Bushnell, BSG
2001-10-09 16:43               ` davel
2001-10-10  8:49                 ` Ralph Corderoy
2001-10-10  8:49                 ` Thomas Bushnell, BSG
2001-10-10  9:48                   ` davel
2001-10-11  9:10                     ` Thomas Bushnell, BSG
2001-10-11 10:54                       ` davel
2001-10-12  9:19                         ` Thomas Bushnell, BSG
2001-10-09 16:46               ` Alexander Viro
2001-10-10  8:50                 ` Thomas Bushnell, BSG
2001-10-10 10:29                   ` Alexander Viro
2001-10-10  1:05               ` erik quanstrom
2001-10-10  2:15                 ` david presotto
2001-10-10  4:54                   ` Skip Tavakkolian
2001-10-10  8:30                 ` davel
2001-10-08 10:34       ` Boyd Roberts
2001-10-08  9:50   ` Douglas A. Gwyn
2001-10-08 11:13     ` Lucio De Re
2001-10-08  9:42 ` Thomas Bushnell, BSG
2001-10-08 17:43 ` Richard Uhtenwoldt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2003-03-10 13:13 [9fans] E attribute in libsec/port/x509.c Claude BONFANTI
2003-03-11 17:41 ` Eric Grosse
2003-03-12  9:33   ` [9fans] hardware support for the fs kernel Conor Williams
2003-03-12  9:52     ` Geoff Collyer
2003-03-12 10:01     ` Lucio De Re
2003-03-12 10:12       ` Geoff Collyer
2003-03-12 10:28         ` Lucio De Re
2003-03-12 17:15           ` Russ Cox
2003-03-13  7:59             ` Lucio De Re
2003-03-13 15:45               ` Russ Cox
2003-03-14  5:06                 ` Lucio De Re
2003-03-12 10:52         ` James A. Robinson
2003-03-12 11:11           ` Lucio De Re
2003-03-12 22:59             ` Geoff Collyer
2003-03-12 23:20               ` Jack Johnson
2002-09-21  2:01 [9fans] 9 in the news matt
2002-09-21 11:16 ` Lucio De Re
2002-09-21 15:21   ` Arnaud SAHUGUET
2002-09-21 15:57   ` Jack Johnson
2002-09-21 16:01   ` Ronald G Minnich
2002-09-21 21:55   ` Steve Kilbane
2002-10-01 12:45 ` matt
2002-10-03  1:47 ` [9fans] did a replica/pull, now "mk 'CONF='pc" fails? Eric Dorman
2002-03-27 20:12 [9fans] sam and ssh Geoff Collyer
2002-03-27 20:18 ` Lucio De Re
2002-03-27 20:31   ` Scott Schwartz
     [not found] <lucio@proxima.alt.za>
2001-04-23  5:53 ` [9fans] PGP Lucio De Re
2001-04-23  6:01   ` Scott Schwartz
2001-04-23 16:13     ` Dan Cross
2002-03-27 18:14 ` [9fans] sam and ssh Lucio De Re
2002-03-27 19:08   ` Scott Schwartz
2002-03-28  1:28   ` Micah Stetson
2002-03-27 20:15     ` Lucio De Re
2002-03-27 20:22       ` Lucio De Re
2002-03-27 20:36         ` Lucio De Re
2002-03-27 20:41           ` Lucio De Re
2002-04-08 12:47           ` peter huang
2002-03-10 23:59 [9fans] samuel Alex Danilo
2002-03-11  0:07 ` Alexander Viro
2002-03-11  7:44   ` Steve Kilbane
2002-03-11  0:45 ` Andrew Simmons
2002-03-11 10:10   ` Thomas Bushnell, BSG
2001-11-07 21:34 [9fans] Rant (was Re: Plan9 and Ada95?) anothy
2001-11-08  5:30 ` Lucio De Re
2001-11-08  5:43   ` George Michaelson
2001-11-08  7:07     ` Jim Choate
2001-11-08  7:40     ` Lucio De Re
2001-11-08 10:40       ` Thomas Bushnell, BSG
2001-11-08 20:15       ` Quinn Dunkan
2001-11-08  5:59   ` Andrey A Mirtchovski
2001-11-08  7:16 ` Steve Kilbane
2001-11-29  4:44 ` Boyd Roberts
2001-10-09 13:18 Plan 9 annoyances (was: Re: [9fans] mv vs cp) bwc
2001-10-10  8:57 ` Douglas A. Gwyn
2001-10-10 10:02   ` Browsers (was: Re: Plan 9 annoyances (was: Re: [9fans] mv vs cp)) Lucio De Re
2001-10-10 18:38     ` Steve Kilbane
2001-10-11  8:31       ` John Murdie
2001-10-11 17:26         ` Steve Kilbane
2001-10-12  6:31         ` [9fans] Re: Browsers Boyd Roberts
     [not found] <nemo@gsyc.escet.urjc.es>
2001-10-09  6:25 ` [9fans] rewriting paths [was: mv vs cp] Fco.J.Ballesteros
2001-10-09  6:41   ` George Michaelson
2001-10-10  9:05     ` Douglas A. Gwyn
2001-10-09 14:19   ` Richard
2001-08-18  7:38 [9fans] Sam question nigel
2001-08-18  8:31 ` Steve Kilbane
2001-08-20  8:57   ` Luis Fernandes
2001-08-20 11:10     ` Boyd Roberts
2001-08-18 11:06 ` Boyd Roberts
2001-08-19  6:57 ` Lucio De Re
2001-08-19 10:54   ` Boyd Roberts
2001-08-19 11:13     ` Lucio De Re
2001-08-19 12:02       ` Boyd Roberts
2001-08-19 12:23         ` Lucio De Re
2001-08-19 16:17           ` Steve Kilbane
2001-08-19 20:57 ` Dan Cross
2000-11-13 20:19 [9fans] AFS-client for Plan9 - ? anothy
2000-11-14  9:58 ` Wladimir Mutel
     [not found]   ` <mwg@alkar.net>
2000-11-14 22:33     ` Tom Duff
2000-11-14 22:41       ` Boyd Roberts
2000-11-14 22:41       ` Alexander Viro
2000-11-14 22:51         ` Boyd Roberts
     [not found]           ` <boyd@planete.net>
2000-11-14 23:02             ` Tom Duff
2000-11-20 10:55           ` Chris Locke
2000-11-20 10:56           ` Douglas A. Gwyn
2000-11-20 13:24             ` Boyd Roberts
     [not found]         ` <viro@math.psu.edu>
2000-11-14 23:00           ` Tom Duff
2000-11-14 23:15             ` Alexander Viro
2000-11-14 23:54           ` Tom Duff
2000-11-15  0:31             ` Alexander Viro
2000-11-15  0:38               ` Boyd Roberts
2000-11-01 20:47 [9fans] /n/smtp Russ Cox
2000-11-01 21:48 ` Boyd Roberts
2000-11-01 22:02   ` Boyd Roberts
2000-11-01 22:10     ` Scott Schwartz
2000-11-01 22:23       ` Boyd Roberts
2000-07-12  9:04 [9fans] file server problems ianb
2000-07-13  1:33 ` Eric Dorman
2000-07-13  2:28   ` Eric Dorman
2000-07-13  4:15     ` Lucio De Re
2000-07-13  4:33       ` Scott Schwartz
2000-07-13 12:19         ` Lucio De Re

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=E15qeQi-0007p8-00@localhost \
    --to=greon@best.com \
    --cc=9fans@cse.psu.edu \
    /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).