* [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.