From: Mykola Golub Date: Tue, 5 Jan 2016 14:15:08 +0000 (+0200) Subject: rbd-nbd: set reply error properly X-Git-Tag: v10.0.3~119^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e10c67bdc7cb601aa30fd9cf8be44d64cabc33d9;p=ceph.git rbd-nbd: set reply error properly Signed-off-by: Mykola Golub --- 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();