[git pull] VFS - the first pile

From: Al Viro
Date: Tue Mar 15 2011 - 17:32:58 EST


Let's try to start pushing early in the window this time...
There are several big ones in that:
* pathname resolution rewrite: trailing symlink resolution is
iterative in all cases, overall structure simplified a _lot_, do_lookup()
turned into something readable, knowledge of RCU stuff localized, do_last()
returned to handling non-create cases as well, NEED_REVAL_DOT got a lot
saner.
* open-by-fhandle series by Aneesh
* O_PATH descriptors (basically, "location in namespace, not actually
opened from fs POV, can be dup'ed/passed around/etc. and used as starting
points in ...at(2) kind of syscalls, but not used for any IO; that stuff
allows to do sane pathname resolution in userland and avoids the need to
add fsckloads of extra syscalls in open-by-fhandle series).

There will be more pull requests; this is just taking care of really
heavy-weight stuff.

Please, pull from
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6.git/ for-linus

Shortlog:
Al Viro (45):
compat breakage in preadv() and pwritev()
fix race in audit_get_nd()
kill path_lookup()
take RCU-dependent stuff around exec_permission() into a new helper
sanitize path_walk() mess
merge path_init and path_init_rcu
merge component type recognition
untangle the "need_reval_dot" mess
pull dropping RCU on success of link_path_walk() into path_lookupat()
pull security_inode_follow_link() into __do_follow_link()
clean up the failure exits after __do_follow_link() in do_filp_open()
Collect "operation mode" arguments of do_last() into a structure
switch do_filp_open() to struct open_flags
separate -ESTALE/-ECHILD retries in do_filp_open() from real work
kill out_dput: in link_path_walk()
pull handling of . and .. into inlined helper
clear RCU on all failure exits from link_path_walk()
make handle_dots() leave RCU mode on error
make nameidata_dentry_drop_rcu_maybe() always leave RCU mode
get rid of the last LOOKUP_RCU dependencies in link_path_walk()
get rid of nd->file
switch non-create side of open() to use of do_last()
kill __lookup_one_len()
sanitize pathname component hash calculation
expand finish_open() in its only caller
move may_open() from __open_name_create() to do_last()
do_last: unify may_open() call and everyting after it
fold __open_namei_create() and open_will_truncate() into do_last()
do_last: kill a rudiment of old ->d_revalidate() workaround
path_openat: clean ELOOP handling a bit
untangle do_lookup()
reduce vfs_path_lookup() to do_path_lookup()
open-style analog of vfs_path_lookup()
clean statfs-like syscalls up
New AT_... flag: AT_EMPTY_PATH
New kind of open files - "location only".
Allow O_PATH for symlinks
readlinkat(), fchownat() and fstatat() with empty relative pathnames
Allow passing O_PATH descriptors via SCM_RIGHTS datagrams
pull handling of one pathname component into a helper
update nd->inode in __do_follow_link() instead of after do_follow_link()
Make trailing symlink resolution in path_lookupat() iterative
simplify link_path_walk() tail
Turn resolution of trailing symlinks iterative everywhere
tidy the trailing symlinks traversal up

Aneesh Kumar K.V (12):
exportfs: Return the minimum required handle size
vfs: Add name to file handle conversion support
vfs: Add open by file handle support
fs: Don't allow to create hardlink for deleted file
fs: Remove i_nlink check from file system link callback
x86: Add new syscalls for x86_32
x86: Add new syscalls for x86_64
unistd.h: Add new syscalls numbers to asm-generic
vfs: Export file system uuid via /proc/<pid>/mountinfo
ext3: Copy fs UUID to superblock.
ext4: Copy fs UUID to superblock
fs: allow AT_EMPTY_PATH in linkat(), limit that to CAP_DAC_READ_SEARCH

Diffstat:
arch/alpha/kernel/osf_sys.c | 36 +-
arch/parisc/hpux/sys_hpux.c | 65 +-
arch/powerpc/platforms/cell/spufs/syscalls.c | 2 +-
arch/um/drivers/mconsole_kern.c | 21 +-
arch/x86/ia32/ia32entry.S | 2 +
arch/x86/include/asm/unistd_32.h | 4 +-
arch/x86/include/asm/unistd_64.h | 4 +
arch/x86/kernel/syscall_table_32.S | 2 +
fs/Kconfig | 2 +-
fs/Makefile | 2 +
fs/btrfs/export.c | 8 +-
fs/btrfs/inode.c | 3 -
fs/compat.c | 69 +-
fs/exec.c | 18 +-
fs/exportfs/expfs.c | 11 +-
fs/ext3/namei.c | 7 -
fs/ext3/super.c | 1 +
fs/ext4/namei.c | 7 -
fs/ext4/super.c | 2 +
fs/fat/inode.c | 4 +-
fs/fcntl.c | 37 +-
fs/fhandle.c | 265 +++++
fs/file_table.c | 55 +-
fs/fuse/inode.c | 4 +-
fs/gfs2/export.c | 8 +-
fs/internal.h | 13 +
fs/isofs/export.c | 8 +-
fs/jfs/namei.c | 3 -
fs/namei.c | 1498 +++++++++++---------------
fs/namespace.c | 16 +
fs/nfsctl.c | 21 +-
fs/ocfs2/export.c | 8 +-
fs/ocfs2/refcounttree.c | 2 +-
fs/open.c | 126 ++-
fs/reiserfs/inode.c | 7 +-
fs/reiserfs/namei.c | 4 -
fs/stat.c | 7 +-
fs/statfs.c | 176 ++--
fs/ubifs/dir.c | 18 -
fs/udf/namei.c | 7 +-
fs/xfs/linux-2.6/xfs_export.c | 4 +-
include/asm-generic/fcntl.h | 4 +
include/asm-generic/unistd.h | 6 +-
include/linux/exportfs.h | 9 +-
include/linux/fcntl.h | 1 +
include/linux/file.h | 2 +
include/linux/fs.h | 19 +-
include/linux/namei.h | 7 +-
include/linux/syscalls.h | 8 +-
init/Kconfig | 12 +
kernel/audit_watch.c | 85 +-
kernel/sys_ni.c | 5 +
kernel/sysctl_binary.c | 19 +-
mm/shmem.c | 4 +-
net/core/scm.c | 2 +-
net/unix/af_unix.c | 2 +-
net/unix/garbage.c | 2 +-
57 files changed, 1489 insertions(+), 1255 deletions(-)

--
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/