summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_receiver.c
diff options
context:
space:
mode:
authorAndreas Gruenbacher2011-03-17 17:15:20 +0100
committerPhilipp Reisner2012-11-08 16:44:47 +0100
commitc696774691c9f9ec238fe3b1892f78796a985852 (patch)
tree4ea24652feeecdb4019d0a445c81cb8ae80db6b7 /drivers/block/drbd/drbd_receiver.c
parentdrbd: send_bitmap_rle_or_plain(): Error handling cleanup (diff)
downloadkernel-qcow2-linux-c696774691c9f9ec238fe3b1892f78796a985852.tar.gz
kernel-qcow2-linux-c696774691c9f9ec238fe3b1892f78796a985852.tar.xz
kernel-qcow2-linux-c696774691c9f9ec238fe3b1892f78796a985852.zip
drbd: Add drbd_recv_all(): Receive an entire buffer
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.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 28980145b92c..880634264e96 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -565,6 +565,19 @@ static int drbd_recv(struct drbd_tconn *tconn, void *buf, size_t size)
return rv;
}
+static int drbd_recv_all(struct drbd_tconn *tconn, void *buf, size_t size)
+{
+ int err;
+
+ err = drbd_recv(tconn, buf, size);
+ if (err != size) {
+ if (err >= 0)
+ err = -EIO;
+ } else
+ err = 0;
+ return err;
+}
+
/* quoting tcp(7):
* On individual connections, the socket buffer size must be set prior to the
* listen(2) or connect(2) calls in order to have it take effect.