diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index f846e55c174033ed5e4ce998e637ca459d02839f..cf816b79278dbeb3afb9a23992fff7b880dc5aa3 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -4587,14 +4587,14 @@ validate_req_change_req_state(struct drbd_conf *mdev, u64 id, sector_t sector, req = find_request(mdev, root, id, sector, missing_ok, func); if (unlikely(!req)) { spin_unlock_irq(&mdev->tconn->req_lock); - return false; + return -EIO; } __req_mod(req, what, &m); spin_unlock_irq(&mdev->tconn->req_lock); if (m.bio) complete_master_bio(mdev, &m); - return true; + return 0; } static int got_BlockAck(struct drbd_tconn *tconn, struct packet_info *pi) @@ -4642,9 +4642,9 @@ static int got_BlockAck(struct drbd_tconn *tconn, struct packet_info *pi) return false; } - return validate_req_change_req_state(mdev, p->block_id, sector, - &mdev->write_requests, __func__, - what, false); + return !validate_req_change_req_state(mdev, p->block_id, sector, + &mdev->write_requests, __func__, + what, false); } static int got_NegAck(struct drbd_tconn *tconn, struct packet_info *pi) @@ -4655,7 +4655,7 @@ static int got_NegAck(struct drbd_tconn *tconn, struct packet_info *pi) int size = be32_to_cpu(p->blksize); bool missing_ok = tconn->net_conf->wire_protocol == DRBD_PROT_A || tconn->net_conf->wire_protocol == DRBD_PROT_B; - bool found; + int err; mdev = vnr_to_mdev(tconn, pi->vnr); if (!mdev) @@ -4669,10 +4669,10 @@ static int got_NegAck(struct drbd_tconn *tconn, struct packet_info *pi) return true; } - found = validate_req_change_req_state(mdev, p->block_id, sector, - &mdev->write_requests, __func__, - NEG_ACKED, missing_ok); - if (!found) { + err = validate_req_change_req_state(mdev, p->block_id, sector, + &mdev->write_requests, __func__, + NEG_ACKED, missing_ok); + if (err) { /* Protocol A has no P_WRITE_ACKs, but has P_NEG_ACKs. The master bio might already be completed, therefore the request is no longer in the collision hash. */ @@ -4700,9 +4700,9 @@ static int got_NegDReply(struct drbd_tconn *tconn, struct packet_info *pi) dev_err(DEV, "Got NegDReply; Sector %llus, len %u; Fail original request.\n", (unsigned long long)sector, be32_to_cpu(p->blksize)); - return validate_req_change_req_state(mdev, p->block_id, sector, - &mdev->read_requests, __func__, - NEG_ACKED, false); + return !validate_req_change_req_state(mdev, p->block_id, sector, + &mdev->read_requests, __func__, + NEG_ACKED, false); } static int got_NegRSDReply(struct drbd_tconn *tconn, struct packet_info *pi)