])
])
+#
+# 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])
+])
+])
+
#
# LC_PROG_LINUX
LC_WALK_SPACE_HAS_DATA_SEM
LC_SELINUX_IS_ENABLED
+ # 2.6.39
+ LC_HAVE_FSTYPE_MOUNT
+
#
if test x$enable_server = xyes ; then
AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])
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*/ && \
+ (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)) /*LU-1646*/
sb->s_export_op = &lustre_export_operations;
#endif
/***************** FS registration ******************/
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
-struct super_block * lustre_get_sb(struct file_system_type *fs_type, int flags,
- const char *devname, void * data)
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) || defined(HAVE_FSTYPE_MOUNT)
+struct dentry *lustre_mount(struct file_system_type *fs_type, int flags,
+ const char *devname, void * data)
{
- return get_sb_nodev(fs_type, flags, data, lustre_fill_super);
+ 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);
}
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