Index: linux-2.6.10/fs/namespace.c =================================================================== --- linux-2.6.10.orig/fs/namespace.c 2005-04-07 14:55:39.000000000 +0800 +++ linux-2.6.10/fs/namespace.c 2005-04-07 14:55:41.612112360 +0800 @@ -62,6 +62,7 @@ INIT_LIST_HEAD(&mnt->mnt_mounts); INIT_LIST_HEAD(&mnt->mnt_list); INIT_LIST_HEAD(&mnt->mnt_fslink); + INIT_LIST_HEAD(&mnt->mnt_lustre_list); if (name) { int size = strlen(name)+1; char *newname = kmalloc(size, GFP_KERNEL); @@ -177,6 +178,9 @@ { struct super_block *sb = mnt->mnt_sb; dput(mnt->mnt_root); + spin_lock(&dcache_lock); + list_del(&mnt->mnt_lustre_list); + spin_unlock(&dcache_lock); free_vfsmnt(mnt); deactivate_super(sb); } Index: linux-2.6.10/include/linux/dcache.h =================================================================== --- linux-2.6.10.orig/include/linux/dcache.h 2005-04-07 14:55:40.871224992 +0800 +++ linux-2.6.10/include/linux/dcache.h 2005-04-07 15:12:37.823624728 +0800 @@ -167,7 +167,10 @@ #define DCACHE_UNHASHED 0x0010 #define DCACHE_LUSTRE_INVALID 0x0020 /* invalidated by Lustre */ -#define DCACHE_CROSS_REF 0x0040 /* entry points to inode on another MDS */ +#define DCACHE_CROSS_REF 0x0040 /* entry points to inode on another MDS */ + + + extern spinlock_t dcache_lock;