All of 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; 4+ 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] 4+ 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; 4+ 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 related	[flat|nested] 4+ 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; 4+ 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 related	[flat|nested] 4+ 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; 4+ 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 related	[flat|nested] 4+ messages in thread

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

Thread overview: 4+ 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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.