]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: clear osd op reply output only when writes success
authorhuangjun <huangjun@xsky.com>
Tue, 26 Feb 2019 14:06:22 +0000 (22:06 +0800)
committerhuangjun <huangjun@xsky.com>
Thu, 28 Feb 2019 01:48:08 +0000 (09:48 +0800)
As described in https://github.com/ceph/ceph/commit/18f08cd9c0a3972149eef635fb1035dfc4fcb662,
if the op is failed, we should return data.

Fixes: http://tracker.ceph.com/issues/38492
Signed-off-by: huangjun <huangjun@xsky.com>
src/osd/OSD.cc

index bfd7b3bbb1932c083d1cf76d16e89aceaa33e540..f8da08fff752ff25ed7d0588596e645e97101eb5 100644 (file)
@@ -1719,7 +1719,7 @@ void OSDService::reply_op_error(OpRequestRef op, int err, eversion_t v,
   int flags;
   flags = m->get_flags() & (CEPH_OSD_FLAG_ACK|CEPH_OSD_FLAG_ONDISK);
 
-  MOSDOpReply *reply = new MOSDOpReply(m, err, osdmap->get_epoch(), flags, true);
+  MOSDOpReply *reply = new MOSDOpReply(m, err, osdmap->get_epoch(), flags, err >= 0);
   reply->set_reply_versions(v, uv);
   m->get_connection()->send_message(reply);
 }