LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [GIT PULL -mm] Unionfs updates/cleanups
@ 2007-02-12 18:30 Josef 'Jeff' Sipek
  2007-02-12 18:30 ` [PATCH 1/3] fs/unionfs/: Use __roundup_pow_of_two instead of custom rounding code Josef 'Jeff' Sipek
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Josef 'Jeff' Sipek @ 2007-02-12 18:30 UTC (permalink / raw)
  To: linux-kernel, linux-fsdevel; +Cc: akpm

The following patches (also available though the git tree) fix few
cleanliness issues with Unionfs.

You can pull from 'master' branch of
git://git.kernel.org/pub/scm/linux/kernel/git/jsipek/unionfs.git

to receive the following:

Erez Zadok (1):
      Unionfs: Documentation update

Josef 'Jeff' Sipek (2):
      fs/unionfs/: Use __roundup_pow_of_two instead of custom rounding code
      fs/: Move eCryptfs & Unionfs config options into a sub-menu

 Documentation/filesystems/unionfs/00-INDEX   |    8 ++-
 Documentation/filesystems/unionfs/issues.txt |   23 +++++++++
 Documentation/filesystems/unionfs/usage.txt  |   31 ++++--------
 fs/Kconfig                                   |   66 ++++++++++++++------------
 fs/unionfs/main.c                            |    2 +-
 fs/unionfs/rdstate.c                         |   11 +----
 fs/unionfs/union.h                           |    1 +
 7 files changed, 77 insertions(+), 65 deletions(-)

Josef 'Jeff' Sipek.



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

* [PATCH 1/3] fs/unionfs/: Use __roundup_pow_of_two instead of custom rounding code
  2007-02-12 18:30 [GIT PULL -mm] Unionfs updates/cleanups Josef 'Jeff' Sipek
@ 2007-02-12 18:30 ` Josef 'Jeff' Sipek
  2007-02-12 18:30 ` [PATCH 2/3] fs/: Move eCryptfs & Unionfs config options into a sub-menu Josef 'Jeff' Sipek
  2007-02-12 18:30 ` [PATCH 3/3] Unionfs: Documentation update Josef 'Jeff' Sipek
  2 siblings, 0 replies; 5+ messages in thread
From: Josef 'Jeff' Sipek @ 2007-02-12 18:30 UTC (permalink / raw)
  To: linux-kernel, linux-fsdevel; +Cc: akpm, Josef 'Jeff' Sipek

Signed-off-by: Josef 'Jeff' Sipek <jsipek@cs.sunysb.edu>
---
 fs/unionfs/rdstate.c |   11 ++---------
 fs/unionfs/union.h   |    1 +
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/fs/unionfs/rdstate.c b/fs/unionfs/rdstate.c
index 16ce1bf..e240285 100644
--- a/fs/unionfs/rdstate.c
+++ b/fs/unionfs/rdstate.c
@@ -115,19 +115,12 @@ struct unionfs_dir_state *alloc_rdstate(struct inode *inode, int bindex)
 {
 	int i = 0;
 	int hashsize;
-	int mallocsize = sizeof(struct unionfs_dir_state);
+	unsigned long mallocsize = sizeof(struct unionfs_dir_state);
 	struct unionfs_dir_state *rdstate;
 
 	hashsize = guesstimate_hash_size(inode);
 	mallocsize += hashsize * sizeof(struct list_head);
-	/* Round it up to the next highest power of two. */
-	mallocsize--;
-	mallocsize |= mallocsize >> 1;
-	mallocsize |= mallocsize >> 2;
-	mallocsize |= mallocsize >> 4;
-	mallocsize |= mallocsize >> 8;
-	mallocsize |= mallocsize >> 16;
-	mallocsize++;
+	mallocsize = __roundup_pow_of_two(mallocsize);
 
 	/* This should give us about 500 entries anyway. */
 	if (mallocsize > PAGE_SIZE)
diff --git a/fs/unionfs/union.h b/fs/unionfs/union.h
index 8e9a1cc..fc87b03 100644
--- a/fs/unionfs/union.h
+++ b/fs/unionfs/union.h
@@ -41,6 +41,7 @@
 #include <linux/xattr.h>
 #include <linux/fs_stack.h>
 #include <linux/magic.h>
+#include <linux/log2.h>
 
 #include <asm/mman.h>
 #include <asm/system.h>
-- 
1.5.0.rc3.g5057


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

* [PATCH 2/3] fs/: Move eCryptfs & Unionfs config options into a sub-menu
  2007-02-12 18:30 [GIT PULL -mm] Unionfs updates/cleanups Josef 'Jeff' Sipek
  2007-02-12 18:30 ` [PATCH 1/3] fs/unionfs/: Use __roundup_pow_of_two instead of custom rounding code Josef 'Jeff' Sipek
@ 2007-02-12 18:30 ` Josef 'Jeff' Sipek
  2007-02-12 18:30 ` [PATCH 3/3] Unionfs: Documentation update Josef 'Jeff' Sipek
  2 siblings, 0 replies; 5+ messages in thread
From: Josef 'Jeff' Sipek @ 2007-02-12 18:30 UTC (permalink / raw)
  To: linux-kernel, linux-fsdevel
  Cc: akpm, Josef 'Jeff' Sipek, Michael Halcrow

Using The Misc filesystems sub-menu for layered/stackable filesystems only
makes it harder for users to find eCryptfs/Unionfs.

Additionally, the menu can be easily turned into a menuconfig, which could
be used to turn on any VFS/VM functionality required by layered filesystems
(there is none at the moment).

Signed-off-by: Josef 'Jeff' Sipek <jsipek@cs.sunysb.edu>
Signed-off-by: Michael Halcrow <mhalcrow@us.ibm.com>
---
 fs/Kconfig |   66 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/fs/Kconfig b/fs/Kconfig
index cf46c71..99ea991 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -1041,6 +1041,41 @@ config CONFIGFS_FS
 
 endmenu
 
+menu "Layered filesystems"
+
+config ECRYPT_FS
+	tristate "eCrypt filesystem layer support (EXPERIMENTAL)"
+	depends on EXPERIMENTAL && KEYS && CRYPTO
+	help
+	  Encrypted filesystem that operates on the VFS layer.  See
+	  <file:Documentation/ecryptfs.txt> to learn more about
+	  eCryptfs.  Userspace components are required and can be
+	  obtained from <http://ecryptfs.sf.net>.
+
+	  To compile this file system support as a module, choose M here: the
+	  module will be called ecryptfs.
+
+config UNION_FS
+	tristate "Union file system (EXPERIMENTAL)"
+	depends on EXPERIMENTAL
+	help
+	  Unionfs is a stackable unification file system, which appears to
+	  merge the contents of several directories (branches), while keeping
+	  their physical content separate.
+
+	  See <http://www.unionfs.org> for details
+
+config UNION_FS_XATTR
+	bool "Unionfs extended attributes"
+	depends on UNION_FS
+	help
+	  Extended attributes are name:value pairs associated with inodes by
+	  the kernel or by users (see the attr(5) manual page).
+
+	  If unsure, say N.
+
+endmenu
+
 menu "Miscellaneous filesystems"
 
 config ADFS_FS
@@ -1093,18 +1128,6 @@ config AFFS_FS
 	  To compile this file system support as a module, choose M here: the
 	  module will be called affs.  If unsure, say N.
 
-config ECRYPT_FS
-	tristate "eCrypt filesystem layer support (EXPERIMENTAL)"
-	depends on EXPERIMENTAL && KEYS && CRYPTO
-	help
-	  Encrypted filesystem that operates on the VFS layer.  See
-	  <file:Documentation/ecryptfs.txt> to learn more about
-	  eCryptfs.  Userspace components are required and can be
-	  obtained from <http://ecryptfs.sf.net>.
-
-	  To compile this file system support as a module, choose M here: the
-	  module will be called ecryptfs.
-
 config HFS_FS
 	tristate "Apple Macintosh file system support (EXPERIMENTAL)"
 	depends on BLOCK && EXPERIMENTAL
@@ -1554,25 +1577,6 @@ config UFS_DEBUG
 	  Y here.  This will result in _many_ additional debugging messages to be
 	  written to the system log.
 
-config UNION_FS
-	tristate "Union file system (EXPERIMENTAL)"
-	depends on EXPERIMENTAL
-	help
-	  Unionfs is a stackable unification file system, which appears to
-	  merge the contents of several directories (branches), while keeping
-	  their physical content separate.
-
-	  See <http://www.unionfs.org> for details
-
-config UNION_FS_XATTR
-	bool "Unionfs extended attributes"
-	depends on UNION_FS
-	help
-	  Extended attributes are name:value pairs associated with inodes by
-	  the kernel or by users (see the attr(5) manual page).
-
-	  If unsure, say N.
-
 endmenu
 
 menu "Network File Systems"
-- 
1.5.0.rc3.g5057


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

* [PATCH 3/3] Unionfs: Documentation update
  2007-02-12 18:30 [GIT PULL -mm] Unionfs updates/cleanups Josef 'Jeff' Sipek
  2007-02-12 18:30 ` [PATCH 1/3] fs/unionfs/: Use __roundup_pow_of_two instead of custom rounding code Josef 'Jeff' Sipek
  2007-02-12 18:30 ` [PATCH 2/3] fs/: Move eCryptfs & Unionfs config options into a sub-menu Josef 'Jeff' Sipek
@ 2007-02-12 18:30 ` Josef 'Jeff' Sipek
  2 siblings, 0 replies; 5+ messages in thread
From: Josef 'Jeff' Sipek @ 2007-02-12 18:30 UTC (permalink / raw)
  To: linux-kernel, linux-fsdevel; +Cc: akpm, Erez Zadok, Josef 'Jeff' Sipek

From: Erez Zadok <ezk@cs.sunysb.edu>

Be little gentler & updated the URLs

Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
Signed-off-by: Josef 'Jeff' Sipek <jsipek@cs.sunysb.edu>
---
 Documentation/filesystems/unionfs/00-INDEX   |    8 ++++--
 Documentation/filesystems/unionfs/issues.txt |   23 +++++++++++++++++++
 Documentation/filesystems/unionfs/usage.txt  |   31 ++++++++-----------------
 fs/Kconfig                                   |    2 +-
 fs/unionfs/main.c                            |    2 +-
 5 files changed, 40 insertions(+), 26 deletions(-)
 create mode 100644 Documentation/filesystems/unionfs/issues.txt

diff --git a/Documentation/filesystems/unionfs/00-INDEX b/Documentation/filesystems/unionfs/00-INDEX
index 32e96f2..96fdf67 100644
--- a/Documentation/filesystems/unionfs/00-INDEX
+++ b/Documentation/filesystems/unionfs/00-INDEX
@@ -1,8 +1,10 @@
 00-INDEX
 	- this file.
 concepts.txt
-	- A brief introduction of concepts
+	- A brief introduction of concepts.
+issues.txt
+	- A summary of known issues with unionfs.
 rename.txt
-	- Information regarding rename operations
+	- Information regarding rename operations.
 usage.txt
-	- Usage and known limitations
+	- Usage information and examples.
diff --git a/Documentation/filesystems/unionfs/issues.txt b/Documentation/filesystems/unionfs/issues.txt
new file mode 100644
index 0000000..b070175
--- /dev/null
+++ b/Documentation/filesystems/unionfs/issues.txt
@@ -0,0 +1,23 @@
+KNOWN Unionfs ISSUES:
+=====================
+
+1. The NFS server returns -EACCES for read-only exports, instead of -EROFS.
+   This means we can't reliably detect a read-only NFS export.
+
+2. Modifying a Unionfs branch directly, while the union is mounted, is
+   currently unsupported.  We have tested Unionfs under such conditions, and
+   fixed any bugs we found (Unionfs comes with an extensive regression test
+   suite).  However, it may still be possible that changes made to lower
+   branches directly could cause cache incoherency which, in the worst case,
+   may case an oops.  We are currently addressing this problem for Unionfs
+   and also generically for all stackable file systems, by handing mmap and
+   introducing small VFS/MM changes that would allow a file system to handle
+   cache coherency correctly.
+
+3. Unionfs should not use lookup_one_len() on the underlying f/s as it
+   confuses NFS.  Currently, unionfs_lookup() passes lookup intents to the
+   lower file-system, this eliminates part of the problem.  The remaining
+   calls to lookup_one_len may need to be changed to pass an intent.
+
+
+For more information, see <unionfs.filesystems.org>.
diff --git a/Documentation/filesystems/unionfs/usage.txt b/Documentation/filesystems/unionfs/usage.txt
index 3968c9e..14e0856 100644
--- a/Documentation/filesystems/unionfs/usage.txt
+++ b/Documentation/filesystems/unionfs/usage.txt
@@ -1,17 +1,18 @@
 Unionfs is a stackable unification file system, which can appear to merge
 the contents of several directories (branches), while keeping their physical
-content separate. Unionfs is useful for unified source tree management,
+content separate.  Unionfs is useful for unified source tree management,
 merged contents of split CD-ROM, merged separate software package
-directories, data grids, and more. Unionfs allows any mix of read-only and
+directories, data grids, and more.  Unionfs allows any mix of read-only and
 read-write branches, as well as insertion and deletion of branches anywhere
-in the fan-out. To maintain unix semantics, Unionfs handles elimination of
+in the fan-out.  To maintain Unix semantics, Unionfs handles elimination of
 duplicates, partial-error conditions, and more.
 
-mount -t unionfs -o branch-option[,union-options[,...]] none MOUNTPOINT
+# mount -t unionfs -o branch-option[,union-options[,...]] none MOUNTPOINT
 
 The available branch-option for the mount command is:
 
-dirs=branch[=ro|=rw][:...]
+	dirs=branch[=ro|=rw][:...]
+
 specifies a separated list of which directories compose the union.
 Directories that come earlier in the list have a higher precedence than
 those which come later. Additionally, read-only or read-write permissions of
@@ -19,24 +20,12 @@ the branch can be specified by appending =ro or =rw (default) to each
 directory.
 
 Syntax:
-dirs=/branch1[=ro|=rw]:/branch2[=ro|=rw]:...:/branchN[=ro|=rw]
-
-Example:
-dirs=/writable_branch=rw:/read-only_branch=ro
 
+	dirs=/branch1[=ro|=rw]:/branch2[=ro|=rw]:...:/branchN[=ro|=rw]
 
-KNOWN ISSUES:
-=============
-
-The NFS server returns -EACCES for read-only exports, instead of -EROFS.
-This means we can't reliably detect a read-only NFS export.
+Example:
 
-Modifying a Unionfs branch directly, while the union is mounted, is
-currently unsupported.  Any such change can cause Unionfs to oops, or stay
-silent and even RESULT IN DATA LOSS.
+	dirs=/writable_branch=rw:/read-only_branch=ro
 
-Unionfs should not use lookup_one_len() on the underlying fs as it confuses
-NFS. Currently, unionfs_lookup() passes lookup intents to the lower
-filesystem, this eliminates part of the problem. The remaining calls to
-lookup_one_len may need to be changed to pass an intent.
 
+For more information, see unionfs.filesystems.org.
diff --git a/fs/Kconfig b/fs/Kconfig
index 99ea991..10a216e 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -1063,7 +1063,7 @@ config UNION_FS
 	  merge the contents of several directories (branches), while keeping
 	  their physical content separate.
 
-	  See <http://www.unionfs.org> for details
+	  See <http://unionfs.filesystems.org> for details
 
 config UNION_FS_XATTR
 	bool "Unionfs extended attributes"
diff --git a/fs/unionfs/main.c b/fs/unionfs/main.c
index 36d30bc..ca7ee26 100644
--- a/fs/unionfs/main.c
+++ b/fs/unionfs/main.c
@@ -679,7 +679,7 @@ static void __exit exit_unionfs_fs(void)
 MODULE_AUTHOR("Erez Zadok, Filesystems and Storage Lab, Stony Brook University"
 		" (http://www.fsl.cs.sunysb.edu)");
 MODULE_DESCRIPTION("Unionfs " UNIONFS_VERSION
-		" (http://www.unionfs.org)");
+		" (http://unionfs.filesystems.org)");
 MODULE_LICENSE("GPL");
 
 module_init(init_unionfs_fs);
-- 
1.5.0.rc3.g5057


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

* [GIT PULL -mm] Unionfs updates/cleanups
@ 2007-01-29 20:37 Josef 'Jeff' Sipek
  0 siblings, 0 replies; 5+ messages in thread
From: Josef 'Jeff' Sipek @ 2007-01-29 20:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-fsdevel, akpm

The following patches (also available though the git tree) address a number
of code cleanliness issues with Unionfs.

You can pull from 'master' branch of
git://git.kernel.org/pub/scm/linux/kernel/git/jsipek/unionfs.git

to receive the following:

Adrian Bunk (1):
      fs/unionfs/: possible cleanups

Josef 'Jeff' Sipek (3):
      fs/unionfs/: Remove stale_inode.c
      fs/unionfs/: Andrew Morton's comments
      fs/unionfs/: Don't duplicate the struct nameidata

 fs/unionfs/branchman.c   |    4 +-
 fs/unionfs/commonfops.c  |   54 +++++++++++-----------
 fs/unionfs/copyup.c      |   67 +++++++++++++++------------
 fs/unionfs/dentry.c      |   19 +++-----
 fs/unionfs/fanout.h      |   51 +++++++++++++++++----
 fs/unionfs/file.c        |   17 +++-----
 fs/unionfs/inode.c       |   69 +++++++++++++++-------------
 fs/unionfs/lookup.c      |  113 +++++++++++++++++++++++-----------------------
 fs/unionfs/main.c        |   32 +++++++-------
 fs/unionfs/rdstate.c     |    2 +-
 fs/unionfs/rename.c      |    8 ++--
 fs/unionfs/sioq.c        |   19 ++++----
 fs/unionfs/sioq.h        |    1 -
 fs/unionfs/stale_inode.c |  112 ---------------------------------------------
 fs/unionfs/subr.c        |   65 +++++++++++++++++++++++++-
 fs/unionfs/super.c       |    7 +--
 fs/unionfs/union.h       |   84 +++-------------------------------
 fs/unionfs/unlink.c      |    8 ++--
 fs/unionfs/xattr.c       |   16 +++---
 19 files changed, 330 insertions(+), 418 deletions(-)

Josef 'Jeff' Sipek.

jsipek@cs.sunysb.edu

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

end of thread, other threads:[~2007-02-12 18:31 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-12 18:30 [GIT PULL -mm] Unionfs updates/cleanups Josef 'Jeff' Sipek
2007-02-12 18:30 ` [PATCH 1/3] fs/unionfs/: Use __roundup_pow_of_two instead of custom rounding code Josef 'Jeff' Sipek
2007-02-12 18:30 ` [PATCH 2/3] fs/: Move eCryptfs & Unionfs config options into a sub-menu Josef 'Jeff' Sipek
2007-02-12 18:30 ` [PATCH 3/3] Unionfs: Documentation update Josef 'Jeff' Sipek
  -- strict thread matches above, loose matches on Subject: below --
2007-01-29 20:37 [GIT PULL -mm] Unionfs updates/cleanups Josef 'Jeff' Sipek

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).