- if (array->paa_reqs_count != NULL) {
- OBD_FREE(array->paa_reqs_count,
- sizeof(__u32) * array->paa_size);
- array->paa_reqs_count= NULL;
- }
+ if (array->paa_reqs_array != NULL) {
+ OBD_FREE(array->paa_reqs_array,
+ sizeof(cfs_list_t) * array->paa_size);
+ array->paa_reqs_array = NULL;
+ }
+
+ if (array->paa_reqs_count != NULL) {
+ OBD_FREE(array->paa_reqs_count,
+ sizeof(__u32) * array->paa_size);
+ array->paa_reqs_count = NULL;
+ }
+ svcpt->scp_service = NULL;
+ } while (0);
+
+ do { /* iterrate over multiple partitions in the future */
+ svcpt = svc->srv_part;
+ if (svcpt != NULL)
+ OBD_FREE_PTR(svcpt);
+ } while (0);
+
+ OBD_FREE_PTR(svc);
+}
+
+int ptlrpc_unregister_service(struct ptlrpc_service *service)
+{
+ ENTRY;
+
+ CDEBUG(D_NET, "%s: tearing down\n", service->srv_name);
+
+ service->srv_is_stopping = 1;
+
+ cfs_spin_lock(&ptlrpc_all_services_lock);
+ cfs_list_del_init(&service->srv_list);
+ cfs_spin_unlock(&ptlrpc_all_services_lock);
+
+ ptlrpc_lprocfs_unregister_service(service);
+
+ ptlrpc_service_del_atimer(service);
+ ptlrpc_stop_all_threads(service);
+
+ ptlrpc_service_unlink_rqbd(service);
+ ptlrpc_service_purge_all(service);
+ ptlrpc_service_free(service);