Whamcloud - gitweb
LU-9679 ptlrpc: use OBD_ALLOC_PTR_ARRAY() and FREE
[fs/lustre-release.git] / lustre / ptlrpc / ptlrpcd.c
index 9810009..b3a06a5 100644 (file)
@@ -175,7 +175,7 @@ ptlrpcd_select_pc(struct ptlrpc_request *req)
        if (req != NULL && req->rq_send_state != LUSTRE_IMP_FULL)
                return &ptlrpcd_rcv;
 
-       cpt = cfs_cpt_current(cfs_cpt_table, 1);
+       cpt = cfs_cpt_current(cfs_cpt_tab, 1);
        if (ptlrpcds_cpt_idx == NULL)
                idx = cpt;
        else
@@ -445,7 +445,7 @@ static int ptlrpcd(void *arg)
 
        unshare_fs_struct();
 
-       if (cfs_cpt_bind(cfs_cpt_table, pc->pc_cpt) != 0)
+       if (cfs_cpt_bind(cfs_cpt_tab, pc->pc_cpt) != 0)
                CWARN("Failed to bind %s on CPT %d\n", pc->pc_name, pc->pc_cpt);
 
        /*
@@ -486,16 +486,20 @@ static int ptlrpcd(void *arg)
         * new_req_list and ptlrpcd_check() moves them into the set.
         */
        do {
-               struct l_wait_info lwi;
                time64_t timeout;
 
                timeout = ptlrpc_set_next_timeout(set);
-               lwi = LWI_TIMEOUT(cfs_time_seconds(timeout),
-                               ptlrpc_expired_set, set);
 
                lu_context_enter(&env.le_ctx);
                lu_context_enter(env.le_ses);
-               l_wait_event(set->set_waitq, ptlrpcd_check(&env, pc), &lwi);
+               if (timeout == 0)
+                       wait_event_idle(set->set_waitq,
+                                       ptlrpcd_check(&env, pc));
+               else if (wait_event_idle_timeout(set->set_waitq,
+                                                ptlrpcd_check(&env, pc),
+                                                cfs_time_seconds(timeout))
+                        == 0)
+                       ptlrpc_expired_set(set);
                lu_context_exit(&env.le_ctx);
                lu_context_exit(env.le_ses);
 
@@ -588,7 +592,7 @@ static int ptlrpcd_partners(struct ptlrpcd *pd, int index)
        if (pc->pc_npartners <= 0)
                GOTO(out, rc);
 
-       OBD_CPT_ALLOC(pc->pc_partners, cfs_cpt_table, pc->pc_cpt,
+       OBD_CPT_ALLOC(pc->pc_partners, cfs_cpt_tab, pc->pc_cpt,
                      sizeof(struct ptlrpcd_ctl *) * pc->pc_npartners);
        if (pc->pc_partners == NULL) {
                pc->pc_npartners = 0;
@@ -689,8 +693,7 @@ out:
        if (pc->pc_npartners > 0) {
                LASSERT(pc->pc_partners != NULL);
 
-               OBD_FREE(pc->pc_partners,
-                        sizeof(struct ptlrpcd_ctl *) * pc->pc_npartners);
+               OBD_FREE_PTR_ARRAY(pc->pc_partners, pc->pc_npartners);
                pc->pc_partners = NULL;
        }
        pc->pc_npartners = 0;
@@ -717,7 +720,7 @@ static void ptlrpcd_fini(void)
                        OBD_FREE(ptlrpcds[i], ptlrpcds[i]->pd_size);
                        ptlrpcds[i] = NULL;
                }
-               OBD_FREE(ptlrpcds, sizeof(ptlrpcds[0]) * ptlrpcds_num);
+               OBD_FREE_PTR_ARRAY(ptlrpcds, ptlrpcds_num);
        }
        ptlrpcds_num = 0;
 
@@ -725,8 +728,8 @@ static void ptlrpcd_fini(void)
        ptlrpcd_free(&ptlrpcd_rcv);
 
        if (ptlrpcds_cpt_idx != NULL) {
-               ncpts = cfs_cpt_number(cfs_cpt_table);
-               OBD_FREE(ptlrpcds_cpt_idx, ncpts * sizeof(ptlrpcds_cpt_idx[0]));
+               ncpts = cfs_cpt_number(cfs_cpt_tab);
+               OBD_FREE_PTR_ARRAY(ptlrpcds_cpt_idx, ncpts);
                ptlrpcds_cpt_idx = NULL;
        }
 
@@ -752,7 +755,7 @@ static int ptlrpcd_init(void)
        /*
         * Determine the CPTs that ptlrpcd threads will run on.
         */
-       cptable = cfs_cpt_table;
+       cptable = cfs_cpt_tab;
        ncpts = cfs_cpt_number(cptable);
        if (ptlrpcd_cpts != NULL) {
                struct cfs_expr_list *el;