From: huangjun Date: Tue, 26 Feb 2019 14:06:22 +0000 (+0800) Subject: osd: clear osd op reply output only when writes success X-Git-Tag: v15.0.0~195^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e205b71072cbdd6668ebd848ed6a83a7cdfcc5c3;p=ceph.git osd: clear osd op reply output only when writes success 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 --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index bfd7b3bbb193..f8da08fff752 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -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); }