[PATCH 00/34] Union mount core for review

From: Valerie Aurora
Date: Thu Sep 16 2010 - 18:23:07 EST


This series is the core mount and lookup infrastructure from union
mounts, split up into small, easily digestible, bikeshed-friendly
pieces. All of the (non-documentation, non-whitespace) patches in
this series are less than 140 lines long. It's like Twitter for
kernel patches.

VFS developers should be able to review each of these patches in 3
minutes or less. If it takes you longer, email me and I'll post a
video on YouTube making fun of you.

Changes since last posted version:

- Lower directory entries now in one array, not linked list
- Use clone_mnt() flags to automate hard read-only counts
- Actually enforce top-layer-mounted-only-once rule
- Retune DNAME_INLINE_LEN_MIN to keep 64-byte alignment
- Updated documentation

Next on the todo list:

- Rewrite in-kernel copyup to be more awesomer
* Prevent half-finished copies appearing after crash
* Set correct owners/perms/etc. of copied up dirs/files
* Remove races between parent/target lookup
* On metadata writes, only copyup file data if it succeeds
- Keep reviewing hybrid union patches

After I finish that (3-4 weeks?), I have nothing major left on my
to-do list. I'm sure that will change as I get code reviews. :)

Against 2.6.35. The rest of the series (whiteouts, fallthrus,
soon-to-be-obsolete copyup, etc.) is in branch "split_lookup"
in:

git://git.kernel.org/pub/scm/linux/kernel/git/val/linux-2.6.git

Thanks for reviewing!

-VAL

Jan Blunck (3):
union-mount: Introduce MNT_UNION and MS_UNION flags
union-mount: Free union stack on removal of topmost dentry from
dcache
union-mount: Create IS_MNT_UNION()

Valerie Aurora (31):
VFS: Make clone_mnt() and copy_tree() return error codes
VFS: Add CL_NO_SHARED flag to clone_mnt()/copy_tree()
VFS: Add CL_NO_SLAVE flag to clone_mnt()/copy_tree()
VFS: Add CL_MAKE_HARD_READONLY flag to clone_mnt()/copy_tree()
union-mount: Union mounts documentation
union-mount: Add CONFIG_UNION_MOUNT option
union-mount: Create union_stack structure
union-mount: Add two superblock fields for union mounts
union-mount: Add union_alloc()
union-mount: Add union_find_dir()
union-mount: Create d_free_unions()
union-mount: Create union_add_dir()
union-mount: Add union_create_topmost_dir()
union-mount: Create needs_lookup_union()
union-mount: Create check_topmost_union_mnt()
union-mount: Add clone_union_tree() and put_union_sb()
union-mount: Create build_root_union()
union-mount: Create prepare_mnt_union() and cleanup_mnt_union()
union-mount: Prevent improper union-related remounts
union-mount: Prevent topmost file system from being mounted elsewhere
union-mount: Prevent bind mounts of union mounts
union-mount: Implement union mount
union-mount: Temporarily disable some syscalls
union-mount: Basic infrastructure of __union_lookup()
union-mount: Process negative dentries in __union_lookup()
union-mount: Return files found in lower layers in __union_lookup()
union-mount: Build union stack in __lookup_union()
union-mount: Follow mount in __lookup_union()
union-mount: Add lookup_union() wrapper for __lookup_union()
union-mount: Add do_lookup_union() wrapper for __lookup_union()
union-mount: Call union lookup functions in lookup path

Documentation/filesystems/union-mounts.txt | 744 ++++++++++++++++++++++++++++
fs/Kconfig | 13 +
fs/Makefile | 1 +
fs/dcache.c | 14 +
fs/namei.c | 204 ++++++++
fs/namespace.c | 378 ++++++++++++--
fs/pnode.c | 5 +-
fs/pnode.h | 3 +
fs/super.c | 1 +
fs/union.c | 178 +++++++
fs/union.h | 80 +++
include/linux/dcache.h | 22 +-
include/linux/fs.h | 13 +
include/linux/mount.h | 4 +
14 files changed, 1604 insertions(+), 56 deletions(-)
create mode 100644 Documentation/filesystems/union-mounts.txt
create mode 100644 fs/union.c
create mode 100644 fs/union.h

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