Whamcloud - gitweb
LU-16140 lnet: revert "LU-16011 lnet: use preallocate bulk for server"
[fs/lustre-release.git] / lnet / selftest / brw_test.c
index 83e0548..2e77d8f 100644 (file)
@@ -120,12 +120,11 @@ brw_client_init(struct sfw_test_instance *tsi)
 
        list_for_each_entry(tsu, &tsi->tsi_units, tsu_list) {
                bulk = srpc_alloc_bulk(lnet_cpt_of_nid(tsu->tsu_dest.nid, NULL),
-                                      npg);
+                                      off, npg, len, opc == LST_BRW_READ);
                if (bulk == NULL) {
                        brw_client_fini(tsi);
                        return -ENOMEM;
                }
-               srpc_init_bulk(bulk, off, npg, len, opc == LST_BRW_READ);
 
                tsu->tsu_private = bulk;
        }
@@ -389,6 +388,8 @@ brw_server_rpc_done(struct srpc_server_rpc *rpc)
                CDEBUG(D_NET, "Transferred %d pages bulk data %s %s\n",
                       blk->bk_niov, blk->bk_sink ? "from" : "to",
                       libcfs_id2str(rpc->srpc_peer));
+
+       sfw_free_pages(rpc);
 }
 
 static int
@@ -436,6 +437,7 @@ brw_server_handle(struct srpc_server_rpc *rpc)
        struct srpc_brw_reply *reply = &replymsg->msg_body.brw_reply;
        struct srpc_brw_reqst *reqst = &reqstmsg->msg_body.brw_reqst;
        int npg;
+       int rc;
 
         LASSERT (sv->sv_id == SRPC_SERVICE_BRW);
 
@@ -486,66 +488,37 @@ brw_server_handle(struct srpc_server_rpc *rpc)
                return 0;
        }
 
-       srpc_init_bulk(rpc->srpc_bulk, 0, npg, reqst->brw_len,
-                      reqst->brw_rw == LST_BRW_WRITE);
+       rc = sfw_alloc_pages(rpc, rpc->srpc_scd->scd_cpt, npg,
+                            reqst->brw_len,
+                            reqst->brw_rw == LST_BRW_WRITE);
+       if (rc != 0)
+               return rc;
 
-       if (reqst->brw_rw == LST_BRW_READ)
-               brw_fill_bulk(rpc->srpc_bulk, reqst->brw_flags, BRW_MAGIC);
-       else
-               brw_fill_bulk(rpc->srpc_bulk, reqst->brw_flags, BRW_POISON);
+        if (reqst->brw_rw == LST_BRW_READ)
+                brw_fill_bulk(rpc->srpc_bulk, reqst->brw_flags, BRW_MAGIC);
+        else
+                brw_fill_bulk(rpc->srpc_bulk, reqst->brw_flags, BRW_POISON);
 
-       return 0;
+        return 0;
 }
 
-static int
-brw_srpc_init(struct srpc_server_rpc *rpc, int cpt)
-{
-       /* just alloc a maximal size - actual values will be adjusted later */
-       rpc->srpc_bulk = srpc_alloc_bulk(cpt, LNET_MAX_IOV);
-       if (rpc->srpc_bulk == NULL)
-               return -ENOMEM;
-
-       srpc_init_bulk(rpc->srpc_bulk, 0, LNET_MAX_IOV, 0, 0);
+struct sfw_test_client_ops brw_test_client;
 
-       return 0;
-}
-
-static void
-brw_srpc_fini(struct srpc_server_rpc *rpc)
+void brw_init_test_client(void)
 {
-       /* server RPC have just MAX_IOV size */
-       srpc_init_bulk(rpc->srpc_bulk, 0, LNET_MAX_IOV, 0, 0);
-
-       srpc_free_bulk(rpc->srpc_bulk);
-       rpc->srpc_bulk = NULL;
-}
-
-struct sfw_test_client_ops brw_test_client = {
-       .tso_init       = brw_client_init,
-       .tso_fini       = brw_client_fini,
-       .tso_prep_rpc   = brw_client_prep_rpc,
-       .tso_done_rpc   = brw_client_done_rpc,
+        brw_test_client.tso_init       = brw_client_init;
+        brw_test_client.tso_fini       = brw_client_fini;
+        brw_test_client.tso_prep_rpc   = brw_client_prep_rpc;
+        brw_test_client.tso_done_rpc   = brw_client_done_rpc;
 };
 
-struct srpc_service brw_test_service = {
-       .sv_id         = SRPC_SERVICE_BRW,
-       .sv_name       = "brw_test",
-       .sv_handler    = brw_server_handle,
-       .sv_bulk_ready = brw_bulk_ready,
-
-       .sv_srpc_init  = brw_srpc_init,
-       .sv_srpc_fini  = brw_srpc_fini,
-};
+struct srpc_service brw_test_service;
 
 void brw_init_test_service(void)
 {
-       unsigned long cache_size = cfs_totalram_pages() >> 1;
-
-       /* brw prealloc cache should don't eat more than half memory */
-       cache_size /= LNET_MAX_IOV;
-
+        brw_test_service.sv_id         = SRPC_SERVICE_BRW;
+        brw_test_service.sv_name       = "brw_test";
+        brw_test_service.sv_handler    = brw_server_handle;
+        brw_test_service.sv_bulk_ready = brw_bulk_ready;
        brw_test_service.sv_wi_total   = brw_srv_workitems;
-
-       if (brw_test_service.sv_wi_total > cache_size)
-               brw_test_service.sv_wi_total = cache_size;
 }