struct obd_export *lustre_find_lwp_by_index(const char *dev, __u32 idx);
void lustre_notify_lwp_list(struct obd_export *exp);
int tgt_name2lwp_name(const char *tgt_name, char *lwp_name, int len, __u32 idx);
-int lustre_tgt_register_fs(void);
-void lustre_tgt_unregister_fs(void);
#endif /* HAVE_SERVER_SUPPORT */
int lustre_check_exclusion(struct super_block *sb, char *svname);
@SERVER_TRUE@obdclass-all-objs += lprocfs_status_server.o
@SERVER_TRUE@obdclass-all-objs += lu_ucred.o
@SERVER_TRUE@obdclass-all-objs += md_attrs.o
-@SERVER_TRUE@obdclass-all-objs += obd_mount_server.o
@SERVER_TRUE@obdclass-all-objs += obdo_server.o
@SERVER_TRUE@obdclass-all-objs += scrub.o
@SERVER_FALSE@EXTRA_DIST += lprocfs_status_server.c
@SERVER_FALSE@EXTRA_DIST += lu_ucred.c
@SERVER_FALSE@EXTRA_DIST += md_attrs.c
-@SERVER_FALSE@EXTRA_DIST += obd_mount_server.c
@SERVER_FALSE@EXTRA_DIST += obdo_server.c
@SERVER_FALSE@EXTRA_DIST += scrub.c
err = lu_ucred_global_init();
if (err != 0)
goto cleanup_dt_global;
-
- err = lustre_tgt_register_fs();
- if (err && err != -EBUSY) {
- /* Don't fail if server code also registers "lustre_tgt" */
- CERROR("obdclass: register fstype 'lustre_tgt' failed: rc = %d\n",
- err);
- goto cleanup_lu_ucred_global;
- }
#endif /* HAVE_SERVER_SUPPORT */
/* simulate a late OOM situation now to require all
cleanup_all:
#ifdef HAVE_SERVER_SUPPORT
- /* fake error but filesystem has been registered */
- lustre_tgt_unregister_fs();
-
-cleanup_lu_ucred_global:
lu_ucred_global_fini();
cleanup_dt_global:
misc_deregister(&obd_psdev);
#ifdef HAVE_SERVER_SUPPORT
- lustre_tgt_unregister_fs();
lu_ucred_global_fini();
dt_global_fini();
#endif /* HAVE_SERVER_SUPPORT */
}
return type;
}
+EXPORT_SYMBOL(class_get_type);
void class_put_type(struct obd_type *type)
{
module_put(type->typ_dt_ops->o_owner);
atomic_dec(&type->typ_refcnt);
}
+EXPORT_SYMBOL(class_put_type);
static void class_sysfs_release(struct kobject *kobj)
{
print_lustre_cfg(lcfg);
EXIT;
}
+EXPORT_SYMBOL(lustre_swab_lustre_cfg);
/* used only for compatibility with old on-disk cfg_marker data */
struct cfg_marker32 {
EXIT;
}
+EXPORT_SYMBOL(lustre_swab_cfg_marker);
}
return rc;
}
+EXPORT_SYMBOL(class_match_nid);
int class_match_net(char *buf, char *key, __u32 net)
{
}
return rc;
}
+EXPORT_SYMBOL(class_match_net);
char *lustre_cfg_string(struct lustre_cfg *lcfg, u32 index)
{
RETURN(rc);
}
+EXPORT_SYMBOL(class_add_conn);
/** Remove a failover NID location. */
static int class_del_conn(struct obd_device *obd, struct lustre_cfg *lcfg)
}
return rc;
}
+EXPORT_SYMBOL(lustre_start_simple);
static DEFINE_MUTEX(mgc_start_lock);
target_objs += $(TARGET)out_lib.o $(TARGET)update_trans.o
target_objs += $(TARGET)update_records.o $(TARGET)update_recovery.o
target_objs += $(TARGET)tgt_grant.o $(TARGET)tgt_fmd.o
-target_objs += $(TARGET)barrier.o
+target_objs += $(TARGET)tgt_mount.o $(TARGET)barrier.o
ptlrpc_objs := client.o recover.o connection.o niobuf.o pack_generic.o
ptlrpc_objs += events.o ptlrpc_module.o service.o pinger.o
void tgt_mod_exit(void);
int nodemap_mod_init(void);
void nodemap_mod_exit(void);
-#else /* HAVE_SERVER_SUPPORT */
-static inline int tgt_mod_init(void)
-{
- return 0;
-}
-
-static inline void tgt_mod_exit(void)
-{
- return;
-}
-
-static inline int nodemap_mod_init(void)
-{
- return 0;
-}
-
-static inline void nodemap_mod_exit(void)
-{
- return;
-}
-#endif /* !HAVE_SERVER_SUPPORT */
+#endif /* HAVE_SERVER_SUPPORT */
static inline void ptlrpc_reqset_put(struct ptlrpc_request_set *set)
{
if (rc)
RETURN(rc);
- rc = tgt_mod_init();
- if (rc)
- GOTO(err_layout, rc);
-
rc = ptlrpc_hr_init();
if (rc)
- GOTO(err_tgt, rc);
+ GOTO(err_layout, rc);
rc = ptlrpc_request_cache_init();
if (rc)
if (rc)
GOTO(err_sptlrpc, rc);
- rc = nodemap_mod_init();
+#ifdef HAVE_SERVER_SUPPORT
+ rc = tgt_mod_init();
if (rc)
GOTO(err_nrs, rc);
+ rc = nodemap_mod_init();
+ if (rc)
+ GOTO(err_tgt, rc);
+#endif
RETURN(0);
+#ifdef HAVE_SERVER_SUPPORT
+err_tgt:
+ tgt_mod_exit();
err_nrs:
ptlrpc_nrs_fini();
+#endif
err_sptlrpc:
sptlrpc_fini();
err_ldlm:
ptlrpc_request_cache_fini();
err_hr:
ptlrpc_hr_fini();
-err_tgt:
- tgt_mod_exit();
err_layout:
req_layout_fini();
return rc;
static void __exit ptlrpc_exit(void)
{
+#ifdef HAVE_SERVER_SUPPORT
nodemap_mod_exit();
+ tgt_mod_exit();
+#endif
ptlrpc_nrs_fini();
sptlrpc_fini();
ldlm_exit();
ptlrpc_request_cache_fini();
ptlrpc_hr_fini();
ptlrpc_connection_fini();
- tgt_mod_exit();
req_layout_fini();
}
MOSTLYCLEANFILES := @MOSTLYCLEANFILES@
EXTRA_DIST = tgt_main.c tgt_lastrcvd.c tgt_handler.c tgt_internal.h \
- tgt_grant.c out_handler.c out_lib.c barrier.c tgt_fmd.c
+ tgt_grant.c out_handler.c out_lib.c barrier.c tgt_fmd.c \
+ tgt_mount.c
EXTRA_DIST += update_trans.c
EXTRA_DIST += update_records.c
EXTRA_DIST += update_recovery.c
struct top_thandle *top_th);
void tgt_cancel_slc_locks(struct lu_target *tgt, __u64 transno);
+int lustre_tgt_register_fs(void);
+void lustre_tgt_unregister_fs(void);
void barrier_init(void);
void barrier_fini(void);
if (result != 0)
RETURN(result);
+ result = lustre_tgt_register_fs();
+ if (result != 0) {
+ lu_kmem_fini(tgt_caches);
+ RETURN(result);
+ }
+
tgt_page_to_corrupt = alloc_page(GFP_KERNEL);
tgt_key_init_generic(&tgt_thread_key, NULL);
lu_context_key_degister(&tgt_session_key);
update_info_fini();
+ lustre_tgt_unregister_fs();
+
lu_kmem_fini(tgt_caches);
}