linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/32] VFS based Union Mount (V3)
@ 2009-05-18 16:08 Jan Blunck
  2009-05-18 16:08 ` [PATCH 01/32] atomic: Only take lock when the counter drops to zero on UP as well Jan Blunck
                   ` (35 more replies)
  0 siblings, 36 replies; 68+ messages in thread
From: Jan Blunck @ 2009-05-18 16:08 UTC (permalink / raw)
  To: linux-kernel, linux-fsdevel; +Cc: viro, bharata, dwmw2, mszeredi, vaurora

Here is another post of the VFS based union mount implementation.

Traditionally the mount operation is opaque, which means that the content of
the mount point, the directory where the file system is mounted on, is hidden
by the content of the mounted file system's root directory until the file
system is unmounted again. Unlike the traditional UNIX mount mechanism, that
hides the contents of the mount point, a union mount presents a view as if
both filesystems are merged together. Although only the topmost layer of the
mount stack can be altered, it appears as if transparent file system mounts
allow any file to be created, modified or deleted.

Most people know the concepts and features of union mounts from other
operating systems like Sun's Translucent Filesystem, Plan9 or BSD. For an
in-depth review of union mounts and other unioning file systems, see:

http://lwn.net/Articles/324291/
http://lwn.net/Articles/325369/
http://lwn.net/Articles/327738/

Here are the key features of this implementation:
- completely VFS based
- does not change the namespace stacking
- directory listings have duplicate entries removed in the kernel
- writable unions: only the topmost file system layer may be writable
- writable unions: new whiteout filetype handled inside the kernel

Major changes since last post:
- Updated the whiteout patches:
  - DCACHE_WHITEOUT flag set on a negative dentry
  - uses filetype instead of reserved inode number on EXT2
- Copy-up directories during lookup
- Implemented fallthru support for in-kernel readdir() as proposed by
  Valerie Aurora (Henson)
- Bugfixes

Valerie updated the HOWTO page and the UML disk image. You can find her
instruction how to testdrive the code here:

http://valerieaurora.org/union/

The following patches apply on 2.6.29. Comments are welcome!

Cheers,
Jan


Jan Blunck (26):
  atomic: Only take lock when the counter drops to zero on UP as well
  VFS: BUG() if somebody tries to rehash an already hashed dentry
  VFS: propagate mnt_flags into do_loopback
  VFS: Make lookup_hash() return a struct path
  VFS: Remove unnecessary micro-optimization in cached_lookup()
  VFS: Make real_lookup() return a struct path
  VFS: Introduce dput() variant that maintains a kill-list
  whiteout: Don't return information about whiteouts to userspace
  whiteout: Add vfs_whiteout() and whiteout inode operation
  whiteout: Set S_OPAQUE inode flag when creating directories
  whiteout: Add whiteout support to tmpfs
  whiteout: Split of ext2_append_link() from ext2_add_link()
  whiteout: Add whiteout support to ext2
  whiteout: Add path_whiteout() helper
  union-mount: Documentation
  union-mount: Introduce MNT_UNION and MS_UNION flags
  union-mount: Introduce union_mount structure
  union-mount: Drive the union cache via dcache
  union-mount: Some checks during namespace changes
  union-mount: Changes to the namespace handling
  union-mount: Make lookup work for union-mounted file systems
  union-mount: stop lookup when directory has S_OPAQUE flag set
  union-mount: stop lookup when finding a whiteout
  union-mount: in-kernel file copy between union mounted filesystems
  union-mount: check for logically empty directory (FIXME)
  union-mount: call do_whiteout() on unlink and rmdir

Valerie Aurora (Henson) (6):
  union-mount: Always create topmost directory on open
  union-mount: Basic fallthru definitions
  union mount: Support for fallthru entries in union mount lookup
  union mount: ext2 fallthru support
  union-mount: tmpfs fallthru support
  union-mount: Copy up directory entries on first readdir()

 Documentation/filesystems/union-mounts.txt |  187 +++++
 fs/Kconfig                                 |    8 +
 fs/Makefile                                |    2 +
 fs/compat.c                                |    9 +
 fs/dcache.c                                |  143 ++++-
 fs/ext2/dir.c                              |  242 ++++++-
 fs/ext2/ext2.h                             |    4 +
 fs/ext2/inode.c                            |   11 +-
 fs/ext2/namei.c                            |   85 +++-
 fs/ext2/super.c                            |    8 +
 fs/libfs.c                                 |   18 +-
 fs/namei.c                                 | 1009 +++++++++++++++++++++++++---
 fs/namespace.c                             |   54 ++-
 fs/nfsd/nfs3xdr.c                          |    5 +
 fs/nfsd/nfs4xdr.c                          |    2 +-
 fs/nfsd/nfsxdr.c                           |    4 +
 fs/readdir.c                               |   25 +
 fs/union.c                                 |  948 ++++++++++++++++++++++++++
 include/linux/dcache.h                     |   30 +-
 include/linux/ext2_fs.h                    |    5 +
 include/linux/fs.h                         |    7 +
 include/linux/mount.h                      |    4 +
 include/linux/namei.h                      |    6 +
 include/linux/union.h                      |   82 +++
 lib/dec_and_lock.c                         |    3 +-
 mm/shmem.c                                 |  195 +++++-
 26 files changed, 2927 insertions(+), 169 deletions(-)
 create mode 100644 Documentation/filesystems/union-mounts.txt
 create mode 100644 fs/union.c
 create mode 100644 include/linux/union.h


^ permalink raw reply	[flat|nested] 68+ messages in thread

end of thread, other threads:[~2009-06-19  1:54 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-18 16:08 [PATCH 00/32] VFS based Union Mount (V3) Jan Blunck
2009-05-18 16:08 ` [PATCH 01/32] atomic: Only take lock when the counter drops to zero on UP as well Jan Blunck
2009-05-18 16:08 ` [PATCH 02/32] VFS: BUG() if somebody tries to rehash an already hashed dentry Jan Blunck
2009-05-18 16:08 ` [PATCH 03/32] VFS: propagate mnt_flags into do_loopback Jan Blunck
2009-05-18 16:09 ` [PATCH 04/32] VFS: Make lookup_hash() return a struct path Jan Blunck
2009-05-18 16:09 ` [PATCH 05/32] VFS: Remove unnecessary micro-optimization in cached_lookup() Jan Blunck
2009-05-18 16:09 ` [PATCH 06/32] VFS: Make real_lookup() return a struct path Jan Blunck
2009-05-18 16:09 ` [PATCH 07/32] VFS: Introduce dput() variant that maintains a kill-list Jan Blunck
2009-05-18 16:09 ` [PATCH 08/32] whiteout: Don't return information about whiteouts to userspace Jan Blunck
2009-05-18 16:09 ` [PATCH 09/32] whiteout: Add vfs_whiteout() and whiteout inode operation Jan Blunck
2009-05-18 16:09 ` [PATCH 10/32] whiteout: Set S_OPAQUE inode flag when creating directories Jan Blunck
2009-05-18 16:09 ` [PATCH 11/32] whiteout: Add whiteout support to tmpfs Jan Blunck
2009-05-18 16:09 ` [PATCH 12/32] whiteout: Split of ext2_append_link() from ext2_add_link() Jan Blunck
2009-05-18 16:09 ` [PATCH 13/32] whiteout: Add whiteout support to ext2 Jan Blunck
2009-05-18 16:09 ` [PATCH 14/32] whiteout: Add path_whiteout() helper Jan Blunck
2009-05-18 16:09 ` [PATCH 15/32] union-mount: Documentation Jan Blunck
2009-05-25  6:25   ` hooanon05
2009-05-25  8:03     ` Arnd Bergmann
2009-05-25  8:43       ` hooanon05
2009-06-18 19:05         ` Valerie Aurora
2009-06-19  1:53           ` hooanon05
2009-05-18 16:09 ` [PATCH 16/32] union-mount: Introduce MNT_UNION and MS_UNION flags Jan Blunck
2009-05-18 16:09 ` [PATCH 17/32] union-mount: Introduce union_mount structure Jan Blunck
2009-05-18 16:09 ` [PATCH 18/32] union-mount: Drive the union cache via dcache Jan Blunck
2009-05-18 16:09 ` [PATCH 19/32] union-mount: Some checks during namespace changes Jan Blunck
2009-05-18 16:09 ` [PATCH 20/32] union-mount: Changes to the namespace handling Jan Blunck
2009-05-18 16:09 ` [PATCH 21/32] union-mount: Make lookup work for union-mounted file systems Jan Blunck
2009-05-19 16:15   ` Miklos Szeredi
2009-05-19 17:30     ` Valerie Aurora
2009-05-20 10:21       ` Miklos Szeredi
2009-05-18 16:09 ` [PATCH 22/32] union-mount: stop lookup when directory has S_OPAQUE flag set Jan Blunck
2009-05-18 16:09 ` [PATCH 23/32] union-mount: stop lookup when finding a whiteout Jan Blunck
2009-05-18 16:09 ` [PATCH 24/32] union-mount: in-kernel file copy between union mounted filesystems Jan Blunck
2009-05-18 16:09 ` [PATCH 25/32] union-mount: check for logically empty directory (FIXME) Jan Blunck
2009-05-18 16:09 ` [PATCH 26/32] union-mount: call do_whiteout() on unlink and rmdir Jan Blunck
2009-05-18 16:09 ` [PATCH 27/32] union-mount: Always create topmost directory on open Jan Blunck
2009-05-18 16:09 ` [PATCH 28/32] union-mount: Basic fallthru definitions Jan Blunck
2009-05-18 16:09 ` [PATCH 29/32] union mount: Support for fallthru entries in union mount lookup Jan Blunck
2009-05-18 16:09 ` [PATCH 30/32] union mount: ext2 fallthru support Jan Blunck
2009-05-18 16:32   ` Andreas Dilger
2009-05-19  9:42     ` Jan Blunck
2009-05-19 14:05       ` Andreas Dilger
2009-05-19 16:13         ` Jan Blunck
2009-05-18 16:09 ` [PATCH 31/32] union-mount: tmpfs " Jan Blunck
2009-05-18 16:09 ` [PATCH 32/32] union-mount: Copy up directory entries on first readdir() Jan Blunck
2009-05-18 20:40 ` [PATCH] Userland for VFS based Union Mount (V3) Valerie Aurora
2009-05-21 13:53   ` Andreas Dilger
2009-06-18  3:22     ` Valerie Aurora
2009-05-19  9:48 ` [PATCH 00/32] " Miklos Szeredi
2009-05-19 10:29   ` Jan Blunck
2009-05-19 10:35     ` Miklos Szeredi
2009-05-19 10:39       ` Jan Blunck
2009-05-19 11:54         ` Arnd Bergmann
2009-05-19 12:15           ` Jan Blunck
2009-05-19 12:21             ` Arnd Bergmann
2009-05-19 13:10               ` Jan Blunck
2009-05-19 17:23   ` Valerie Aurora
2009-05-20  9:05     ` Miklos Szeredi
2009-06-08 19:44       ` Valerie Aurora
2009-06-16 15:19         ` Miklos Szeredi
2009-05-21 12:54 ` Jan Rekorajski
2009-06-08 19:57   ` Valerie Aurora
2009-06-08 22:44     ` Jan Rekorajski
2009-06-08 22:48       ` Valerie Aurora
2009-06-15  9:55         ` Jan Rekorajski
2009-06-18  3:23           ` Valerie Aurora
2009-06-04 11:38 ` Scott James Remnant
2009-06-09 22:15   ` Valerie Aurora

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).