config_log_put(cld->cld_params);
config_log_put(cld->cld_nodemap);
config_log_put(cld->cld_sptlrpc);
- if (cld_is_sptlrpc(cld))
+ if (cld_is_sptlrpc(cld)) {
+ cld->cld_stopping = 1;
sptlrpc_conf_log_stop(cld->cld_logname);
+ }
class_export_put(cld->cld_mgcexp);
OBD_FREE(cld, sizeof(*cld) + strlen(cld->cld_logname) + 1);
mutex_unlock(&cld->cld_lock);
config_mark_cld_stop(cld_recover);
+ config_log_put(cld_recover);
config_mark_cld_stop(cld_params);
- config_mark_cld_stop(cld_barrier);
- config_mark_cld_stop(cld_sptlrpc);
-
config_log_put(cld_params);
- config_log_put(cld_recover);
- /* don't set cld_stopping on nm lock as other targets may be active */
- config_log_put(cld_nodemap);
+ config_mark_cld_stop(cld_barrier);
config_log_put(cld_barrier);
+ /* don't explicitly set cld_stopping on sptlrpc lock here, as other
+ * targets may be active, it will be done in config_log_put if necessary
+ */
config_log_put(cld_sptlrpc);
+ /* don't set cld_stopping on nm lock as other targets may be active */
+ config_log_put(cld_nodemap);
/* drop the ref from the find */
config_log_put(cld);