From 2eba197319886c4f2903fd937aebe69eea35290e Mon Sep 17 00:00:00 2001 From: James Simmons Date: Tue, 24 Jul 2012 10:39:22 -0400 Subject: [PATCH] LU-812 replace get_sb with mount in struct file_system_type get_sb() has been removed from struct file_system_type since 2.6.39 and switched to mount(). Signed-off-by: James Simmons Signed-off-by: Wally Wang Change-Id: I44fa30eb51c4444d9ef8e7b545f2b80088f127cc Reviewed-on: http://review.whamcloud.com/1951 Reviewed-by: Andreas Dilger Tested-by: Hudson Tested-by: Maloo Reviewed-by: Bob Glossman Reviewed-by: Oleg Drokin --- lustre/autoconf/lustre-core.m4 | 20 ++++++++++++++++++++ lustre/llite/llite_lib.c | 2 +- lustre/obdclass/obd_mount.c | 17 +++++++++++++++-- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index ae02fd0..1168898 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -1747,6 +1747,25 @@ LB_LINUX_TRY_COMPILE([ ]) # +# 2.6.39 replace get_sb with mount in struct file_system_type +# +AC_DEFUN([LC_HAVE_FSTYPE_MOUNT], +[AC_MSG_CHECKING([if file_system_type has mount field]) +LB_LINUX_TRY_COMPILE([ + #include +],[ + struct file_system_type fst; + void *i = (void *) fst.mount; +],[ + AC_DEFINE(HAVE_FSTYPE_MOUNT, 1, + [struct file_system_type has mount field]) + AC_MSG_RESULT([yes]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# # 2.6.38 generic_permission taken 4 parameters. # in fact, it means rcu-walk aware permission bring. # @@ -1969,6 +1988,7 @@ AC_DEFUN([LC_PROG_LINUX], # 2.6.39 LC_REQUEST_QUEUE_UNPLUG_FN + LC_HAVE_FSTYPE_MOUNT # 3.3 LC_HAVE_MIGRATE_HEADER diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index e62cff7..bdb94d9 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -463,7 +463,7 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt, CDEBUG(D_SUPER, "rootfid "DFID"\n", PFID(&sbi->ll_root_fid)); sb->s_op = &lustre_super_operations; -#if THREAD_SIZE >= 8192 +#if THREAD_SIZE >= 8192 /*b=17630*/ && !defined(HAVE_FSTYPE_MOUNT) /*LU-812*/ sb->s_export_op = &lustre_export_operations; #endif diff --git a/lustre/obdclass/obd_mount.c b/lustre/obdclass/obd_mount.c index 8588bef..e76dbf8 100644 --- a/lustre/obdclass/obd_mount.c +++ b/lustre/obdclass/obd_mount.c @@ -2576,14 +2576,23 @@ void lustre_register_kill_super_cb(void (*cfs)(struct super_block *sb)) EXPORT_SYMBOL(lustre_register_kill_super_cb); /***************** FS registration ******************/ +#ifdef HAVE_FSTYPE_MOUNT +struct dentry *lustre_mount(struct file_system_type *fs_type, int flags, + const char *devname, void *data) +{ + struct lustre_mount_data2 lmd2 = { data, NULL }; + return mount_nodev(fs_type, flags, &lmd2, lustre_fill_super); +} +#else int lustre_get_sb(struct file_system_type *fs_type, int flags, const char *devname, void * data, struct vfsmount *mnt) { - struct lustre_mount_data2 lmd2 = {data, mnt}; + struct lustre_mount_data2 lmd2 = { data, mnt }; - return get_sb_nodev(fs_type, flags, &lmd2, lustre_fill_super, mnt); + return get_sb_nodev(fs_type, flags, &lmd2, lustre_fill_super, mnt); } +#endif void lustre_kill_super(struct super_block *sb) { @@ -2600,7 +2609,11 @@ void lustre_kill_super(struct super_block *sb) struct file_system_type lustre_fs_type = { .owner = THIS_MODULE, .name = "lustre", +#ifdef HAVE_FSTYPE_MOUNT + .mount = lustre_mount, +#else .get_sb = lustre_get_sb, +#endif .kill_sb = lustre_kill_super, .fs_flags = FS_BINARY_MOUNTDATA | FS_REQUIRES_DEV | #ifdef FS_HAS_FIEMAP -- 1.8.3.1