drbd: recv_dless_read(): Return 0 upon success and an error code otherwise
authorAndreas Gruenbacher <agruen@linbit.com>
Wed, 16 Mar 2011 16:54:02 +0000 (17:54 +0100)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 8 Nov 2012 15:44:45 +0000 (16:44 +0100)
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_receiver.c

index 929a268..cca2da7 100644 (file)
@@ -1426,7 +1426,7 @@ static int recv_dless_read(struct drbd_conf *mdev, struct drbd_request *req,
                                dev_warn(DEV,
                                        "short read receiving data reply digest: read %d expected %d\n",
                                        rr, dgs);
-                       return 0;
+                       return rr < 0 ? rr : -EIO;
                }
        }
 
@@ -1450,7 +1450,7 @@ static int recv_dless_read(struct drbd_conf *mdev, struct drbd_request *req,
                                dev_warn(DEV, "short read receiving data reply: "
                                        "read %d expected %d\n",
                                        rr, expect);
-                       return 0;
+                       return rr < 0 ? rr : -EIO;
                }
                data_size -= rr;
        }
@@ -1459,12 +1459,12 @@ static int recv_dless_read(struct drbd_conf *mdev, struct drbd_request *req,
                drbd_csum_bio(mdev, mdev->tconn->integrity_r_tfm, bio, dig_vv);
                if (memcmp(dig_in, dig_vv, dgs)) {
                        dev_err(DEV, "Digest integrity check FAILED. Broken NICs?\n");
-                       return 0;
+                       return -EINVAL;
                }
        }
 
        D_ASSERT(data_size == 0);
-       return 1;
+       return 0;
 }
 
 /* e_end_resync_block() is called via
@@ -1565,7 +1565,7 @@ static int receive_DataReply(struct drbd_conf *mdev, enum drbd_packet cmd,
        /* hlist_del(&req->collision) is done in _req_may_be_done, to avoid
         * special casing it there for the various failure cases.
         * still no race with drbd_fail_pending_reads */
-       ok = recv_dless_read(mdev, req, sector, data_size);
+       ok = !recv_dless_read(mdev, req, sector, data_size);
 
        if (ok)
                req_mod(req, DATA_RECEIVED);