From: cy.l@inwinstack.com Date: Wed, 27 Apr 2016 03:00:25 +0000 (+0800) Subject: Fix RBD-NBD aio_callback error handling X-Git-Tag: v11.0.0~735^2^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a7312a90b6d1aec694771526a7274647777d7852;p=ceph.git Fix RBD-NBD aio_callback error handling Tracker-Id: #15604 Signed-off-by: Chang-Yi Lee --- diff --git a/qa/workunits/rbd/rbd-nbd.sh b/qa/workunits/rbd/rbd-nbd.sh index 3bc7d80d2800..46e8f3858d01 100755 --- a/qa/workunits/rbd/rbd-nbd.sh +++ b/qa/workunits/rbd/rbd-nbd.sh @@ -81,8 +81,7 @@ ${SUDO} rbd-nbd list-mapped | grep "^${DEV}$" #write test dd if=/dev/urandom of=${DATA} bs=1M count=${SIZE} -${SUDO} dd if=${DATA} of=${DEV} bs=1M -sync +${SUDO} dd if=${DATA} of=${DEV} bs=1M oflag=direct [ "`dd if=${DATA} bs=1M | md5sum`" = "`rbd -p ${POOL} --no-progress export ${IMAGE} - | md5sum`" ] #trim test diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index e0c0284021c5..33f7c3f35094 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -186,10 +186,9 @@ private: if (ret < 0) { ctx->reply.error = htonl(-ret); - } else if ((ctx->command == NBD_CMD_WRITE || ctx->command == NBD_CMD_READ) - && ret != static_cast(ctx->request.len)) { + } else if ((ctx->command == NBD_CMD_WRITE) && ret != 0) { derr << __func__ << ": " << *ctx << ": unexpected return value: " << ret - << " (" << ctx->request.len << " expected)" << dendl; + << dendl; ctx->reply.error = htonl(EIO); } else { ctx->reply.error = htonl(0);