Whamcloud - gitweb
LU-9983 osp: align the OSP request size by 4k 08/29208/3
authorDi Wang <di.wang@intel.com>
Tue, 26 Sep 2017 00:25:07 +0000 (20:25 -0400)
committerJohn L. Hammond <john.hammond@intel.com>
Fri, 29 Sep 2017 19:26:32 +0000 (19:26 +0000)
Let's align the OSP request size by 4k, otherwise OUT
might get incorrect out requests.

Signed-off-by: Di Wang <di.wang@intel.com>
Change-Id: Id5c16b031dcb16d764c4e4f325f51b9ecf454533
Reviewed-on: https://review.whamcloud.com/29208
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
lustre/include/lustre_update.h
lustre/osp/osp_trans.c

index bed00f9..eb1f139 100644 (file)
@@ -34,7 +34,6 @@
 #include <lustre_net.h>
 #include <obj_update.h>
 
-#define OUT_UPDATE_INIT_BUFFER_SIZE    4096
 #define OUT_UPDATE_REPLY_SIZE          4096
 #define OUT_BULK_BUFFER_SIZE           4096
 
index 498ed18..5b7f694 100644 (file)
@@ -131,11 +131,13 @@ int osp_object_update_request_create(struct osp_update_request *our,
        if (ours == NULL)
                return -ENOMEM;
 
-       if (size < OUT_UPDATE_INIT_BUFFER_SIZE)
-               size = OUT_UPDATE_INIT_BUFFER_SIZE;
-
+       /* Since this buffer will be put on wire, let's
+        * align the buffer size to PAGE_SIZE to avoid
+        * trouble.
+        */
+       LASSERT(size > 0);
+       size = ((size - 1) | (PAGE_SIZE - 1)) + 1;
        ours->ours_req = object_update_request_alloc(size);
-
        if (IS_ERR(ours->ours_req)) {
                OBD_FREE_PTR(ours);
                return -ENOMEM;
@@ -199,7 +201,7 @@ struct osp_update_request *osp_update_request_create(struct dt_device *dt)
        INIT_LIST_HEAD(&our->our_invalidate_cb_list);
        spin_lock_init(&our->our_list_lock);
 
-       rc = osp_object_update_request_create(our, OUT_UPDATE_INIT_BUFFER_SIZE);
+       rc = osp_object_update_request_create(our, PAGE_SIZE);
        if (rc != 0) {
                OBD_FREE_PTR(our);
                return ERR_PTR(rc);