Use server_get_mount_2 instead of server_get_mount.
int lustre_end_log(struct super_block *sb, char *logname,
struct config_llog_instance *cfg);
struct lustre_mount_info *server_get_mount(const char *name);
+struct lustre_mount_info *server_get_mount_2(const char *name);
int server_put_mount(const char *name, struct vfsmount *mnt);
+int server_put_mount_2(const char *name, struct vfsmount *mnt);
int server_register_target(struct super_block *sb);
struct mgs_target_info;
int server_mti_print(char *title, struct mgs_target_info *mti);
m->mdt_opts.mo_acl = 1;
LCONSOLE_INFO("Enabling ACL\n");
#else
+ m->mdt_opts.mo_acl = 0;
CWARN("ignoring unsupported acl mount option\n");
+ LCONSOLE_INFO("Disabling ACL\n");
#endif
} else if ((len == sizeof("noacl") - 1) &&
(memcmp(options, "noacl", len) == 0)) {
m->mdt_max_mdsize = MAX_MD_SIZE;
m->mdt_max_cookiesize = sizeof(struct llog_cookie);
- lmi = server_get_mount(dev);
+ m->mdt_opts.mo_user_xattr = 0;
+ m->mdt_opts.mo_acl = 0;
+ lmi = server_get_mount_2(dev);
if (lmi == NULL) {
- CERROR("Cannot get mount info for %s!\n", dev);
- RETURN(-EFAULT);
+ CERROR("Cannot get mount info for %s! "
+ "set mdt_opts by default!\n", dev);
+ } else {
+ lsi = s2lsi(lmi->lmi_sb);
+ fsoptions_to_mdt_flags(m, lsi->lsi_lmd->lmd_opts);
+ server_put_mount_2(dev, lmi->lmi_mnt);
}
- lsi = s2lsi(lmi->lmi_sb);
- fsoptions_to_mdt_flags(m, lsi->lsi_lmd->lmd_opts);
- server_put_mount(dev, lmi->lmi_mnt);
-
spin_lock_init(&m->mdt_ioepoch_lock);
m->mdt_opts.mo_compat_resname = 0;
m->mdt_capa_timeout = 320; // CAPA_TIMEOUT;
RETURN(lmi);
}
+/*
+ * Used by mdt to get mount_info from obdname.
+ * There are no blocking when using the mount_info.
+ * Do not use server_get_mount for this purpose.
+ */
+struct lustre_mount_info *server_get_mount_2(const char *name)
+{
+ struct lustre_mount_info *lmi;
+ ENTRY;
+
+ down(&lustre_mount_info_lock);
+ lmi = server_find_mount(name);
+ up(&lustre_mount_info_lock);
+ if (!lmi)
+ CERROR("Can't find mount for %s\n", name);
+
+ RETURN(lmi);
+}
+
static void unlock_mntput(struct vfsmount *mnt)
{
if (kernel_locked()) {
if (atomic_read(&lmi->lmi_mnt->mnt_count) > 1)
CERROR("%s: mount busy, vfscount=%d!\n", name,
atomic_read(&lmi->lmi_mnt->mnt_count));
-
- /* this obd should never need the mount again */
- server_deregister_mount(name);
}
+ /* this obd should never need the mount again */
+ server_deregister_mount(name);
+
RETURN(0);
}
+/* Corresponding to server_get_mount_2 */
+int server_put_mount_2(const char *name, struct vfsmount *mnt)
+{
+ ENTRY;
+ RETURN(0);
+}
/******* mount helper utilities *********/
EXPORT_SYMBOL(lustre_process_log);
EXPORT_SYMBOL(lustre_end_log);
EXPORT_SYMBOL(server_get_mount);
+EXPORT_SYMBOL(server_get_mount_2);
EXPORT_SYMBOL(server_put_mount);
+EXPORT_SYMBOL(server_put_mount_2);
EXPORT_SYMBOL(server_register_target);
EXPORT_SYMBOL(server_name2index);
EXPORT_SYMBOL(server_mti_print);