Thread (88 messages) 88 messages, 14 authors, 2020-08-21

Re: file metadata via fs API (was: [GIT PULL] Filesystem Information)

From: Miklos Szeredi <miklos@szeredi.hu>
Date: 2020-08-11 14:36:47
Also in: linux-fsdevel, linux-security-module, lkml

On Tue, Aug 11, 2020 at 4:31 PM Al Viro [off-list ref] wrote:
On Tue, Aug 11, 2020 at 04:22:19PM +0200, Miklos Szeredi wrote:
quoted
On Tue, Aug 11, 2020 at 4:08 PM Al Viro [off-list ref] wrote:
quoted
On Tue, Aug 11, 2020 at 03:54:19PM +0200, Miklos Szeredi wrote:
quoted
On Wed, Aug 05, 2020 at 10:24:23AM +0200, Miklos Szeredi wrote:
quoted
On Tue, Aug 4, 2020 at 4:36 PM Miklos Szeredi [off-list ref] wrote:
quoted
I think we already lost that with the xattr API, that should have been
done in a way that fits this philosophy.  But given that we  have "/"
as the only special purpose char in filenames, and even repetitions
are allowed, it's hard to think of a good way to do that.  Pity.
One way this could be solved is to allow opting into an alternative
path resolution mode.

E.g.
  openat(AT_FDCWD, "foo/bar//mnt/info", O_RDONLY | O_ALT);
Proof of concept patch and test program below.

Opted for triple slash in the hope that just maybe we could add a global
/proc/sys/fs/resolve_alt knob to optionally turn on alternative (non-POSIX) path
resolution without breaking too many things.  Will try that later...

Comments?
Hell, NO.  This is unspeakably tasteless.  And full of lovely corner cases wrt
symlink bodies, etc.
It's disabled inside symlink body resolution.

Rules are simple:

 - strip off trailing part after first instance of ///
 - perform path lookup as normal
 - resolve meta path after /// on result of normal lookup
... and interpolation of relative symlink body into the pathname does change
behaviour now, *including* the cases when said symlink body does not contain
that triple-X^Hslash garbage.  Wonderful...
Can you please explain?

Thanks,
Miklos
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help