From 47fd7fe2f26c7ec09d1ecc01e5b6e4d109b39290 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 24 Jul 2010 09:49:52 -0700 Subject: [PATCH] osd: helper should reply with ACK on error, op flags on success --- src/osd/OSD.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index dc8c8e5501ef6..b3c8a95e4b251 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4257,7 +4257,15 @@ void OSD::defer_recovery(PG *pg) void OSD::reply_op_error(MOSDOp *op, int err) { - MOSDOpReply *reply = new MOSDOpReply(op, err, osdmap->get_epoch(), CEPH_OSD_FLAG_ACK); + int flags; + if (err == 0) + // reply with whatever ack/safe flags the caller wanted + flags = op->get_flags() & (CEPH_OSD_FLAG_ACK|CEPH_OSD_FLAG_ONDISK); + else + // just ACK on error + flags = CEPH_OSD_FLAG_ACK; + + MOSDOpReply *reply = new MOSDOpReply(op, err, osdmap->get_epoch(), flags); messenger->send_message(reply, op->get_connection()); op->put(); } -- 2.39.5