2007-02-17 08:57:04

by Josef 'Jeff' Sipek

[permalink] [raw]
Subject: [GIT PULL -mm] Unionfs/eCryptfs cleanups

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

to receive the following:

Josef 'Jeff' Sipek (1):
fs/unionfs/: Remove unused structure members & macros

Michael Halcrow (1):
eCryptfs: convert lookup_one_len() to lookup_one_len_nd()

fs/ecryptfs/inode.c | 10 ++++++++--
fs/unionfs/union.h | 9 ---------
2 files changed, 8 insertions(+), 11 deletions(-)

Josef 'Jeff' Sipek.



2007-02-17 08:57:09

by Josef 'Jeff' Sipek

[permalink] [raw]
Subject: [PATCH 2/2] fs/unionfs/: Remove unused structure members & macros

This patch removes:
- hidden_mnt pointer from struct unionfs_data
- mount_flag from struct unionfs_sb_info
- mount_flag related macros

Signed-off-by: Josef 'Jeff' Sipek <[email protected]>
---
fs/unionfs/union.h | 9 ---------
1 files changed, 0 insertions(+), 9 deletions(-)

diff --git a/fs/unionfs/union.h b/fs/unionfs/union.h
index fc87b03..60276c7 100644
--- a/fs/unionfs/union.h
+++ b/fs/unionfs/union.h
@@ -54,9 +54,6 @@
/* unionfs root inode number */
#define UNIONFS_ROOT_INO 1

-/* Mount time flags */
-#define MOUNT_FLAG(sb) (UNIONFS_SB(sb)->mount_flag)
-
/* number of characters while generating unique temporary file names */
#define UNIONFS_TMPNAM_LEN 12

@@ -124,7 +121,6 @@ struct unionfs_dentry_info {
/* These are the pointers to our various objects. */
struct unionfs_data {
struct super_block *sb;
- struct vfsmount *hidden_mnt;
atomic_t sbcount;
int branchperms;
};
@@ -134,7 +130,6 @@ struct unionfs_sb_info {
int bend;

atomic_t generation;
- unsigned long mount_flag;
struct rw_semaphore rwsem;

struct unionfs_data *data;
@@ -341,8 +336,6 @@ static inline int d_deleted(struct dentry *d)

struct dentry *unionfs_lookup_backend(struct dentry *dentry, struct nameidata *nd, int lookupmode);

-#define IS_SET(sb, check_flag) ((check_flag) & MOUNT_FLAG(sb))
-
/* unionfs_permission, check if we should bypass error to facilitate copyup */
#define IS_COPYUP_ERR(err) ((err) == -EROFS)

@@ -405,8 +398,6 @@ static inline int is_robranch(const struct dentry *dentry)
#define UNIONFS_DIR_OPAQUE_NAME "__dir_opaque"
#define UNIONFS_DIR_OPAQUE UNIONFS_WHPFX UNIONFS_DIR_OPAQUE_NAME

-#define VALID_MOUNT_FLAGS (0)
-
#ifndef DEFAULT_POLLMASK
#define DEFAULT_POLLMASK (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM)
#endif
--
1.5.0.19.gddff

2007-02-17 08:57:11

by Josef 'Jeff' Sipek

[permalink] [raw]
Subject: [PATCH 1/2] eCryptfs: convert lookup_one_len() to lookup_one_len_nd()

From: Michael Halcrow <[email protected]>

Call the new lookup_one_len_nd() rather than lookup_one_len(). This fixes an
oops when stacked on NFS.

Note that there are still some issues with eCryptfs on NFS having to do with
directory deletion (I'm not getting an oops, just an -EBUSY).

Signed-off-by: Michael Halcrow <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Josef 'Jeff' Sipek <[email protected]>
---
fs/ecryptfs/inode.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 11f5e50..4c3d786 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -283,7 +283,9 @@ static struct dentry *ecryptfs_lookup(struct inode *dir, struct dentry *dentry,
int rc = 0;
struct dentry *lower_dir_dentry;
struct dentry *lower_dentry;
+ struct dentry *dentry_save;
struct vfsmount *lower_mnt;
+ struct vfsmount *mnt_save;
char *encoded_name;
unsigned int encoded_namelen;
struct ecryptfs_crypt_stat *crypt_stat = NULL;
@@ -310,9 +312,13 @@ static struct dentry *ecryptfs_lookup(struct inode *dir, struct dentry *dentry,
}
ecryptfs_printk(KERN_DEBUG, "encoded_name = [%s]; encoded_namelen "
"= [%d]\n", encoded_name, encoded_namelen);
- lower_dentry = lookup_one_len(encoded_name, lower_dir_dentry,
- encoded_namelen - 1);
+ dentry_save = nd->dentry;
+ mnt_save = nd->mnt;
+ lower_dentry = lookup_one_len_nd(encoded_name, lower_dir_dentry,
+ (encoded_namelen - 1), nd);
kfree(encoded_name);
+ nd->mnt = mnt_save;
+ nd->dentry = dentry_save;
if (IS_ERR(lower_dentry)) {
ecryptfs_printk(KERN_ERR, "ERR from lower_dentry\n");
rc = PTR_ERR(lower_dentry);
--
1.5.0.19.gddff