From e10c67bdc7cb601aa30fd9cf8be44d64cabc33d9 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Tue, 5 Jan 2016 16:15:08 +0200 Subject: [PATCH] rbd-nbd: set reply error properly Signed-off-by: Mykola Golub --- src/tools/rbd_nbd/rbd-nbd.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index 0afa444387dd..ff12f91d772f 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -170,9 +170,15 @@ private: dout(20) << __func__ << ": " << *ctx << dendl; - if (ret > 0) - ret = 0; - ctx->reply.error = htonl(ret); + if (ret < 0) { + ctx->reply.error = htonl(-ret); + } else if (ret != static_cast(ctx->request.len)) { + derr << __func__ << ": " << *ctx << ": unexpected return value: " << ret + << " (" << ctx->request.len << " expected)" << dendl; + ctx->reply.error = htonl(EIO); + } else { + ctx->reply.error = htonl(0); + } ctx->server->io_finish(ctx); aio_completion->release(); -- 2.47.3