Re: silent semantic changes with reiser4
From: Hans Reiser
Date: Sat Aug 28 2004 - 17:38:53 EST
I object to openat().....
My reason is that the things that distinguish between objects should be
the names, not the choice of system call. The reason for this is that
it improves closure and namespace unification to do so, because it
allows all the objects to be accessed within the same namespace.
Yes, it can be useful to allow a namespace to exclude some objects, but
that exclusion should not be mandated. If you want to exclude, you
should cd or chroot to /proc/nopseudos and find a view of the filesystem
that excludes metas, or mount with -nopseuodos.
Do you see why I say this? I can say a lot more about the damage of
fragmenting namespaces into multiple apis.... Why look at xattrs....;-)
Hans
Linus Torvalds wrote:
I'm pretty confident that we can extend the VFS layer to support named
streams (see the technical discussion with Al, rather than the flames in
this thread). I also clearly believe that it is worth it, but I'm starting
to wonder if we should have a special open flag to make people select the
stream.
If you look at the Solaris interface, the _nice_ part about "openat()" is
that you can do something like
file = open(filename, O_RDONLY);
if (file < 0)
return -ENOENT;
icon = openat(file, "icon", O_RDONLY | O_XATTR);
if (icon < 0)
icon = default_icon_file;
..
and it will work regardless of whether "filename" is a directory or a
regular file, if I've understood correctly.
Now, I think that makes sense for several reasons:
- single case
- race-free (think "stat()" vs "fstat()" races).
- I think we want to do "openat()" regardless of whether we ever
support extended attributes or not ("openat()" is nice for doing
"namei()" in user space even in the absense of any attributes or
named streams).
So what we can do is
- implement openat() regardless, and expect to do the Solaris thing for
it if we ever do streams.
- _also_ support the "implied named attributes" for regular files, so
that you don't have to use "openat()" to access them.
Comments? Does anybody hate "openat()" for any reason (regardless of
attributes)? We can easily support it, we'd just need to pass in the file
to use as part of the "nameidata" thing or add an argument (it would also
possibly be cleaner if we made "fs->pwd" be a "struct file").
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/