The patch titled NFS: Abstract out namespace initialisation has been removed from the -mm tree. Its filename is nfs-abstract-out-namespace-initialisation.patch This patch was probably dropped from -mm because it has now been merged into a subsystem tree or into Linus's tree, or because it was folded into its parent patch in the -mm tree. From: David Howells <dhowells@xxxxxxxxxx> Abstract out the namespace initialisation so that temporary namespaces can be set up elsewhere. The following changes were made in [try #8]: (*) init_namespace() has been made out-of-line. Signed-off-by: David Howells <dhowells@xxxxxxxxxx> Cc: Trond Myklebust <trond.myklebust@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- fs/namespace.c | 36 ++++++++++++++++++++---------------- include/linux/namespace.h | 1 + 2 files changed, 21 insertions(+), 16 deletions(-) diff -puN fs/namespace.c~nfs-abstract-out-namespace-initialisation fs/namespace.c --- devel/fs/namespace.c~nfs-abstract-out-namespace-initialisation 2006-05-11 09:56:08.000000000 -0700 +++ devel-akpm/fs/namespace.c 2006-05-11 09:56:08.000000000 -0700 @@ -92,7 +92,6 @@ int simple_set_mnt(struct vfsmount *mnt, mnt->mnt_root = dget(sb->s_root); return 0; } - EXPORT_SYMBOL(simple_set_mnt); void free_vfsmnt(struct vfsmount *mnt) @@ -302,7 +301,6 @@ repeat: goto repeat; } } - EXPORT_SYMBOL(mntput_no_expire); void mnt_pin(struct vfsmount *mnt) @@ -311,7 +309,6 @@ void mnt_pin(struct vfsmount *mnt) mnt->mnt_pinned++; spin_unlock(&vfsmount_lock); } - EXPORT_SYMBOL(mnt_pin); void mnt_unpin(struct vfsmount *mnt) @@ -323,7 +320,6 @@ void mnt_unpin(struct vfsmount *mnt) } spin_unlock(&vfsmount_lock); } - EXPORT_SYMBOL(mnt_unpin); /* iterator */ @@ -472,7 +468,6 @@ int may_umount_tree(struct vfsmount *mnt return 1; } - EXPORT_SYMBOL(may_umount_tree); /** @@ -497,7 +492,6 @@ int may_umount(struct vfsmount *mnt) spin_unlock(&vfsmount_lock); return ret; } - EXPORT_SYMBOL(may_umount); void release_mounts(struct list_head *head) @@ -1136,7 +1130,6 @@ unlock: mntput(newmnt); return err; } - EXPORT_SYMBOL_GPL(do_add_mount); static void expire_mount(struct vfsmount *mnt, struct list_head *mounts, @@ -1242,7 +1235,6 @@ void mark_mounts_for_expiry(struct list_ spin_unlock(&vfsmount_lock); } - EXPORT_SYMBOL_GPL(mark_mounts_for_expiry); /* @@ -1309,7 +1301,6 @@ void shrink_submounts(struct vfsmount *m spin_unlock(&vfsmount_lock); } - EXPORT_SYMBOL_GPL(shrink_submounts); /* @@ -1790,6 +1781,25 @@ out3: goto out2; } +/* + * initialise a namespace, rooting it at the given specified mountpoint if one + * is given + */ +void init_namespace(struct namespace *namespace, struct vfsmount *mnt) +{ + atomic_set(&namespace->count, 1); + INIT_LIST_HEAD(&namespace->list); + init_waitqueue_head(&namespace->poll); + namespace->event = 0; + namespace->root = mnt; + + if (mnt) { + list_add(&mnt->mnt_list, &namespace->list); + mnt->mnt_namespace = namespace; + } +} +EXPORT_SYMBOL_GPL(init_namespace); + static void __init init_mount_tree(void) { struct vfsmount *mnt; @@ -1802,13 +1812,7 @@ static void __init init_mount_tree(void) namespace = kmalloc(sizeof(*namespace), GFP_KERNEL); if (!namespace) panic("Can't allocate initial namespace"); - atomic_set(&namespace->count, 1); - INIT_LIST_HEAD(&namespace->list); - init_waitqueue_head(&namespace->poll); - namespace->event = 0; - list_add(&mnt->mnt_list, &namespace->list); - namespace->root = mnt; - mnt->mnt_namespace = namespace; + init_namespace(namespace, mnt); init_task.namespace = namespace; read_lock(&tasklist_lock); diff -puN include/linux/namespace.h~nfs-abstract-out-namespace-initialisation include/linux/namespace.h --- devel/include/linux/namespace.h~nfs-abstract-out-namespace-initialisation 2006-05-11 09:56:08.000000000 -0700 +++ devel-akpm/include/linux/namespace.h 2006-05-11 09:56:08.000000000 -0700 @@ -16,6 +16,7 @@ struct namespace { extern int copy_namespace(int, struct task_struct *); extern void __put_namespace(struct namespace *namespace); extern struct namespace *dup_namespace(struct task_struct *, struct fs_struct *); +extern void init_namespace(struct namespace *, struct vfsmount *); static inline void put_namespace(struct namespace *namespace) { _ Patches currently in -mm which might be from dhowells@xxxxxxxxxx are fix-can_share_swap_page-when-config_swap.patch fix-typos-in-documentation-memory-barrierstxt.patch nfs-abstract-out-namespace-initialisation.patch nfs-add-dentry-materialisation-op.patch nfs-split-fs-nfs-inodec-into-inode-superblock-and-namespace-bits.patch nfs-share-nfs-superblocks-per-protocol-per-server-per-fsid.patch nfs-share-nfs-superblocks-per-protocol-per-server-per-fsid-fix.patch nfs-share-nfs-superblocks-per-protocol-per-server-per-fsid-warning-fixes.patch fs-cache-provide-a-filesystem-specific-syncable-page-bit.patch fs-cache-add-notification-of-page-becoming-writable-to-vma-ops.patch fs-cache-avoid-enfile-checking-for-kernel-specific-open-files.patch fs-cache-generic-filesystem-caching-facility.patch fs-cache-make-kafs-use-fs-cache.patch fs-cache-cachefiles-a-cache-that-backs-onto-a-mounted-filesystem.patch fs-cache-cachefiles-a-cache-that-backs-onto-a-mounted-filesystem-export-__audit_inode_child.patch fs-cache-cachefiles-a-cache-that-backs-onto-a-mounted-filesystem-warning-fixes.patch fs-cache-vs-vfs-add-lock-owner-argument-to-flush-operation.patch fs-cache-release-page-private-in-failed-readahead.patch fs-cache-release-page-private-in-failed-readahead-uninlining.patch fs-cache-release-page-private-in-failed-readahead-uninlining-2.patch nfs-use-local-caching.patch nfs-use-local-caching-fix.patch fix-incorrect-sa_onstack-behaviour-for-64-bit-processes.patch net-rxrpc-use-list_move.patch fs-use-list_move.patch ecryptfs-main-module-functions-vs-nfs-permit-filesystem-to-override-root-dentry-on-mount.patch reiser4-vs-nfs-permit-filesystem-to-override-root-dentry-on-mount.patch reiser4-vs-nfs-permit-filesystem-to-perform-statfs-with-a-known-root-dentry.patch mutex-subsystem-synchro-test-module.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html