From b2b9201fa34e07b1a29a2951f5bcefc741c32dc2 Mon Sep 17 00:00:00 2001
From: bobijam <bobijam>
Date: Wed, 12 Dec 2007 02:00:15 +0000
Subject: [PATCH] Branch HEAD b=12646 i=johann, shadow

Add opc parameter to ost_checksum_bulk().
---
 lustre/ost/ost_handler.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c
index 733c8b98f3..8008711a2d 100644
--- a/lustre/ost/ost_handler.c
+++ b/lustre/ost/ost_handler.c
@@ -467,7 +467,7 @@ static int get_per_page_niobufs(struct obd_ioobj *ioo, int nioo,
         return npages;
 }
 
-static __u32 ost_checksum_bulk(struct ptlrpc_bulk_desc *desc)
+static __u32 ost_checksum_bulk(struct ptlrpc_bulk_desc *desc, int opc)
 {
         __u32 cksum = ~0;
         int i;
@@ -480,13 +480,14 @@ static __u32 ost_checksum_bulk(struct ptlrpc_bulk_desc *desc)
 
                 /* corrupt the data before we compute the checksum, to
                  * simulate a client->OST data error */
-                if (i == 0 &&
+                if (i == 0 && opc == OST_WRITE &&
                     OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_CHECKSUM_RECEIVE))
                         memcpy(ptr, "bad3", min(4, len));
                 cksum = crc32_le(cksum, ptr, len);
                 /* corrupt the data after we compute the checksum, to
                  * simulate an OST->client data error */
-                if (i == 0 && OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_CHECKSUM_SEND))
+                if (i == 0 && opc == OST_READ &&
+                    OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_CHECKSUM_SEND))
                         memcpy(ptr, "bad4", min(4, len));
                 kunmap(page);
         }
@@ -807,7 +808,7 @@ static int ost_brw_read(struct ptlrpc_request *req, struct obd_trans_info *oti)
         }
 
         if (unlikely(body->oa.o_valid & OBD_MD_FLCKSUM)) {
-                body->oa.o_cksum = ost_checksum_bulk(desc);
+                body->oa.o_cksum = ost_checksum_bulk(desc, OST_READ);
                 body->oa.o_valid = OBD_MD_FLCKSUM;
                 CDEBUG(D_PAGE,"checksum at read origin: %x\n",body->oa.o_cksum);
         } else {
@@ -1122,7 +1123,7 @@ static int ost_brw_write(struct ptlrpc_request *req, struct obd_trans_info *oti)
 
         if (unlikely(client_cksum != 0 && rc == 0)) {
                 static int cksum_counter;
-                server_cksum = ost_checksum_bulk(desc);
+                server_cksum = ost_checksum_bulk(desc, OST_WRITE);
                 repbody->oa.o_valid |= OBD_MD_FLCKSUM;
                 repbody->oa.o_cksum = server_cksum;
                 cksum_counter++;
@@ -1142,7 +1143,7 @@ static int ost_brw_write(struct ptlrpc_request *req, struct obd_trans_info *oti)
                            objcount, ioo, npages, local_nb, oti, rc);
 
         if (unlikely(client_cksum != server_cksum && rc == 0)) {
-                int   new_cksum = ost_checksum_bulk(desc);
+                int   new_cksum = ost_checksum_bulk(desc, OST_WRITE);
                 char *msg;
                 char *via;
                 char *router;
-- 
GitLab