summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_receiver.c
diff options
context:
space:
mode:
authorAndreas Gruenbacher2011-03-16 17:31:52 +0100
committerPhilipp Reisner2012-11-08 16:44:45 +0100
commit69bc7bc351967319bb3db2ecc38e60f9ca198b29 (patch)
treebe28b6c0c47087a87d0c83366c75504eded1bf76 /drivers/block/drbd/drbd_receiver.c
parentdrbd: decode_header(): Return 0 upon success and an error code otherwise (diff)
downloadkernel-qcow2-linux-69bc7bc351967319bb3db2ecc38e60f9ca198b29.tar.gz
kernel-qcow2-linux-69bc7bc351967319bb3db2ecc38e60f9ca198b29.tar.xz
kernel-qcow2-linux-69bc7bc351967319bb3db2ecc38e60f9ca198b29.zip
drbd: drbd_recv_header(): Return 0 upon success and an error code otherwise
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_receiver.c')
-rw-r--r--drivers/block/drbd/drbd_receiver.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 5902d242dca5..c07e81827cdb 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -971,19 +971,21 @@ static int decode_header(struct drbd_tconn *tconn, struct p_header *h, struct pa
static int drbd_recv_header(struct drbd_tconn *tconn, struct packet_info *pi)
{
struct p_header *h = &tconn->data.rbuf.header;
- int r;
+ int err;
- r = drbd_recv(tconn, h, sizeof(*h));
- if (unlikely(r != sizeof(*h))) {
+ err = drbd_recv(tconn, h, sizeof(*h));
+ if (unlikely(err != sizeof(*h))) {
if (!signal_pending(current))
- conn_warn(tconn, "short read expecting header on sock: r=%d\n", r);
- return false;
+ conn_warn(tconn, "short read expecting header on sock: r=%d\n", err);
+ if (err >= 0)
+ err = -EIO;
+ return err;
}
- r = !decode_header(tconn, h, pi);
+ err = decode_header(tconn, h, pi);
tconn->last_received = jiffies;
- return r;
+ return err;
}
static void drbd_flush(struct drbd_conf *mdev)
@@ -3790,7 +3792,7 @@ static int receive_bitmap(struct drbd_conf *mdev, enum drbd_packet cmd,
goto out;
break;
}
- if (!drbd_recv_header(mdev->tconn, &pi))
+ if (drbd_recv_header(mdev->tconn, &pi))
goto out;
cmd = pi.cmd;
data_size = pi.size;
@@ -3941,7 +3943,7 @@ static void drbdd(struct drbd_tconn *tconn)
while (get_t_state(&tconn->receiver) == RUNNING) {
drbd_thread_current_set_cpu(&tconn->receiver);
- if (!drbd_recv_header(tconn, &pi))
+ if (drbd_recv_header(tconn, &pi))
goto err_out;
if (unlikely(pi.cmd >= ARRAY_SIZE(drbd_cmd_handler) ||
@@ -4179,8 +4181,8 @@ static int drbd_do_handshake(struct drbd_tconn *tconn)
if (err)
return 0;
- rv = drbd_recv_header(tconn, &pi);
- if (!rv)
+ err = drbd_recv_header(tconn, &pi);
+ if (err)
return 0;
if (pi.cmd != P_HAND_SHAKE) {
@@ -4254,7 +4256,7 @@ static int drbd_do_auth(struct drbd_tconn *tconn)
unsigned int resp_size;
struct hash_desc desc;
struct packet_info pi;
- int rv;
+ int err, rv;
desc.tfm = tconn->cram_hmac_tfm;
desc.flags = 0;
@@ -4273,9 +4275,11 @@ static int drbd_do_auth(struct drbd_tconn *tconn)
if (!rv)
goto fail;
- rv = drbd_recv_header(tconn, &pi);
- if (!rv)
+ err = drbd_recv_header(tconn, &pi);
+ if (err) {
+ rv = 0;
goto fail;
+ }
if (pi.cmd != P_AUTH_CHALLENGE) {
conn_err(tconn, "expected AuthChallenge packet, received: %s (0x%04x)\n",
@@ -4328,9 +4332,11 @@ static int drbd_do_auth(struct drbd_tconn *tconn)
if (!rv)
goto fail;
- rv = drbd_recv_header(tconn, &pi);
- if (!rv)
+ err = drbd_recv_header(tconn, &pi);
+ if (err) {
+ rv = 0;
goto fail;
+ }
if (pi.cmd != P_AUTH_RESPONSE) {
conn_err(tconn, "expected AuthResponse packet, received: %s (0x%04x)\n",