public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andries.Brouwer@cwi.nl
To: Andries.Brouwer@cwi.nl, viro@math.psu.edu
Cc: linux-kernel@vger.kernel.org
Subject: Re: symlink_prefix
Date: Sun, 3 Jun 2001 12:53:11 +0200 (MET DST)	[thread overview]
Message-ID: <UTC200106031053.MAA185287.aeb@vlet.cwi.nl> (raw)

    From viro@math.psu.edu Sun Jun  3 02:49:08 2001

    On Sun, 3 Jun 2001 Andries.Brouwer@cwi.nl wrote:

    > This evening I needed to work on a filesystem of a non-Linux OS,
    > full of absolute symlinks. After mounting the fs on /mnt, each
    > symlink pointing to /foo/bar in that filesystem should be
    > regarded as pointing to /mnt/foo/bar.
    > 
    > Since doing ls -ld on every component of every pathname was
    > far too slow, I made a small kernel wart, where a mount option
    > -o symlink_prefix=/pathname would cause /pathname to be prepended
    > in front of every absolute symlink in the given filesystem
    > (when the symlink is followed). That works satisfactorily.

    Absolute symlinks... Dunno. _If_ we want that at all, we probably
    want it on per-mountpoint basis. However, that opens a door to
    _really_ ugly feature requests. E.g. "if symlink starts with
    /foo - replace it with /mnt/bar, but if it starts with /foo/baz -
    replace with /mnt/splat instead".

Suppose I have devices /dev/a, /dev/b, /dev/c that contain the
/, /usr and /usr/spool filesystems for FOO OS. Now
	mount /dev/a /mnt -o symlink_prefix=/mnt
	mount /dev/b /mnt/usr -o symlink_prefix=/mnt
	mount /dev/c /mnt/usr/spool -o symlink_prefix=/mnt
suffice.
I do not immediately see a realistic use for changing symlink
contents halfway.

    I can see how to implement per-mountpoint variant. However, I'm
    less than enthusiastic about the API side of that and about the
    ugliness it will lead to. It smells like a wrong approach. And
    no, I don't see a good one right now.

    As for the API... How would you pass that option? Yet another
    mount(2) argument?

What I did was: add a field  `char *mnt_symlink_prefix;'  to the
struct vfsmount, fill it in super.c:add_vfsmnt(), use it in
namei.c:vfs_follow_link(). Pick the value up by recognizing
in super.c:do_mount() the option "symlink_prefix=" before
giving the options to the separate filesystems.

[One could start a subdiscussion about that part. The mount(2)
system call needs to transport vfs information and per-fs information.
So far, the vfs information used flag bits only, but sooner or later
we'll want to have strings, and need a vfs_parse_mount_options().
Indeed, many filesystems today have uid= and gid= and umask= options
that might be removed from the individual filesystems and put into vfs.
After all, such options are also useful for (foreign) ext2 filesystems.]


Andries

             reply	other threads:[~2001-06-03 10:54 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-06-03 10:53 Andries.Brouwer [this message]
2001-06-03 11:25 ` symlink_prefix Alexander Viro
2001-06-04 11:53   ` symlink_prefix Remi Turk
2001-06-05 12:43   ` symlink_prefix Pavel Machek
2001-06-07  1:00   ` symlink_prefix Edgar Toernig
2001-06-07  1:19     ` symlink_prefix Alexander Viro
2001-06-07  3:43       ` symlink_prefix Edgar Toernig
  -- strict thread matches above, loose matches on Subject: below --
2001-06-04 12:28 symlink_prefix Hank Leininger
2001-06-05  2:31 ` symlink_prefix Ton Hospel
2001-06-03 17:37 symlink_prefix Andries.Brouwer
2001-06-03 16:36 symlink_prefix Andries.Brouwer
2001-06-03 17:19 ` symlink_prefix Alexander Viro
2001-06-04 22:05   ` symlink_prefix Albert D. Cahalan
2001-06-03 15:10 symlink_prefix Andries.Brouwer
2001-06-03 15:27 ` symlink_prefix Alexander Viro
2001-06-02 23:54 symlink_prefix Andries.Brouwer
2001-06-03  0:23 ` symlink_prefix Robert Love
2001-06-03  0:49 ` symlink_prefix Alexander Viro
2001-06-03  1:00   ` symlink_prefix Mitchell Blank Jr

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=UTC200106031053.MAA185287.aeb@vlet.cwi.nl \
    --to=andries.brouwer@cwi.nl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=viro@math.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