])
#
+# 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 <linux/fs.h>
+],[
+ 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.
#
# 2.6.39
LC_REQUEST_QUEUE_UNPLUG_FN
+ LC_HAVE_FSTYPE_MOUNT
# 3.3
LC_HAVE_MIGRATE_HEADER
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
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)
{
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