[PATCH 00/25] vfs: atomic open RFC

From: Miklos Szeredi
Date: Wed Mar 07 2012 - 16:30:29 EST


This series allows clean implementation of atomic lookup+(create)+open and
create+open operations that previously were done via ->lookup and ->create using
open intents.

Testing and review is welcome, but at this stage mainly I'd like to hear
opinions on the overall design of the new interfaces.

This is based on the vfs fixes patchset posted previously on -fsdevel.

git tree is here:

git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git atomic-open

Thanks,
Miklos

---
Miklos Szeredi (25):
vfs: split do_lookup()
vfs: reorganize do_last()
vfs: split __dentry_open()
vfs: add i_op->atomic_open()
vfs: add filesystem flags for atomic_open
vfs: add i_op->atomic_create()
nfs: implement i_op->atomic_open()
nfs: clean up ->create in nfs_rpc_ops
nfs: remove nfs4 specific create function
nfs: don't use nd->intent.open.flags
nfs: don't use intents for checking atomic open
fuse: implement i_op->atomic_create()
cifs: implement i_op->atomic_open() and i_op->atomic_create()
ceph: remove unused arg from ceph_lookup_open()
ceph: implement i_op->atomic_open() and i_op->atomic_create()
9p: implement i_op->atomic_create()
vfs: remove open intents from nameidata
vfs: only retry last component if opening stale dentry
vfs: remove nameidata argument from vfs_create
vfs: move O_DIRECT check to common code
gfs2: use i_op->atomic_create()
nfs: use i_op->atomic_create()
vfs: remove nameidata argument from i_op->create()
vfs: optionally skip lookup on exclusive create
vfs: remove nameidata from lookup

---
Documentation/filesystems/Locking | 3 +-
Documentation/filesystems/vfs.txt | 2 +-
fs/9p/v9fs.h | 3 +-
fs/9p/vfs_inode.c | 36 +--
fs/9p/vfs_inode_dotl.c | 36 +-
fs/adfs/dir.c | 2 +-
fs/affs/affs.h | 5 +-
fs/affs/namei.c | 4 +-
fs/afs/dir.c | 12 +-
fs/afs/mntpt.c | 7 +-
fs/autofs4/root.c | 4 +-
fs/bad_inode.c | 7 +-
fs/befs/linuxvfs.c | 4 +-
fs/bfs/dir.c | 6 +-
fs/btrfs/inode.c | 6 +-
fs/cachefiles/namei.c | 2 +-
fs/ceph/dir.c | 38 +--
fs/ceph/file.c | 23 +-
fs/ceph/super.c | 2 +-
fs/ceph/super.h | 6 +-
fs/cifs/cifsfs.c | 24 ++-
fs/cifs/cifsfs.h | 8 +-
fs/cifs/dir.c | 175 +++++------
fs/coda/dir.c | 8 +-
fs/configfs/dir.c | 4 +-
fs/cramfs/inode.c | 2 +-
fs/ecryptfs/inode.c | 9 +-
fs/efs/efs.h | 2 +-
fs/efs/namei.c | 3 +-
fs/exofs/namei.c | 6 +-
fs/ext2/namei.c | 4 +-
fs/ext3/namei.c | 5 +-
fs/ext4/namei.c | 5 +-
fs/fat/namei_msdos.c | 6 +-
fs/fat/namei_vfat.c | 6 +-
fs/freevxfs/vxfs_lookup.c | 5 +-
fs/fuse/dir.c | 60 ++--
fs/gfs2/inode.c | 24 +-
fs/hfs/dir.c | 6 +-
fs/hfs/inode.c | 3 +-
fs/hfsplus/dir.c | 7 +-
fs/hfsplus/inode.c | 2 +-
fs/hostfs/hostfs_kern.c | 6 +-
fs/hpfs/dir.c | 2 +-
fs/hpfs/hpfs_fn.h | 2 +-
fs/hpfs/namei.c | 2 +-
fs/hppfs/hppfs.c | 3 +-
fs/hugetlbfs/inode.c | 3 +-
fs/internal.h | 9 +-
fs/isofs/isofs.h | 2 +-
fs/isofs/namei.c | 2 +-
fs/jffs2/dir.c | 11 +-
fs/jfs/namei.c | 6 +-
fs/libfs.c | 2 +-
fs/logfs/dir.c | 6 +-
fs/minix/namei.c | 5 +-
fs/namei.c | 636 ++++++++++++++++++++++++++++---------
fs/ncpfs/dir.c | 9 +-
fs/nfs/dir.c | 278 +++++++----------
fs/nfs/file.c | 2 +-
fs/nfs/nfs3proc.c | 2 +-
fs/nfs/nfs4proc.c | 48 ---
fs/nfs/proc.c | 2 +-
fs/nfs/super.c | 9 +-
fs/nfsd/vfs.c | 4 +-
fs/nilfs2/namei.c | 6 +-
fs/ntfs/namei.c | 4 +-
fs/ocfs2/dlmfs/dlmfs.c | 3 +-
fs/ocfs2/namei.c | 6 +-
fs/omfs/dir.c | 6 +-
fs/open.c | 113 +++----
fs/openpromfs/inode.c | 5 +-
fs/proc/base.c | 22 +-
fs/proc/generic.c | 3 +-
fs/proc/internal.h | 4 +-
fs/proc/namespaces.c | 2 +-
fs/proc/proc_net.c | 2 +-
fs/proc/proc_sysctl.c | 3 +-
fs/proc/root.c | 9 +-
fs/qnx4/namei.c | 2 +-
fs/qnx4/qnx4.h | 2 +-
fs/ramfs/inode.c | 2 +-
fs/reiserfs/namei.c | 7 +-
fs/romfs/super.c | 3 +-
fs/squashfs/namei.c | 3 +-
fs/sysfs/dir.c | 3 +-
fs/sysv/namei.c | 4 +-
fs/ubifs/dir.c | 6 +-
fs/udf/namei.c | 6 +-
fs/ufs/namei.c | 5 +-
fs/xfs/xfs_iops.c | 9 +-
include/linux/errno.h | 1 +
include/linux/fs.h | 21 +-
include/linux/namei.h | 11 -
include/linux/nfs_xdr.h | 2 +-
ipc/mqueue.c | 5 +-
kernel/cgroup.c | 4 +-
mm/shmem.c | 3 +-
98 files changed, 1031 insertions(+), 889 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/