From cd46d7a6257510f42036d233327794c89a9a0348 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Sat, 28 Mar 2020 01:32:32 +0100 Subject: [PATCH] crimson/osd: fix method's flag handling on CEPH_OSD_OP_CALL. This patch fixes a regression introduced in d8d0ab1a and makes `ClsHello.BadMethods` green again. Signed-off-by: Radoslaw Zarzynski --- src/crimson/osd/ops_executer.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index 158153d2941..bed7f00be74 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -74,7 +74,10 @@ OpsExecuter::call_errorator::future<> OpsExecuter::do_op_call(OSDOp& osd_op) } #endif - logger().debug("calling method {}.{}", cname, mname); + logger().debug("calling method {}.{}, num_read={}, num_write={}", + cname, mname, num_read, num_write); + const auto prev_rd = num_read; + const auto prev_wr = num_write; return seastar::async( [this, method, indata=std::move(indata)]() mutable { ceph::bufferlist outdata; @@ -83,10 +86,12 @@ OpsExecuter::call_errorator::future<> OpsExecuter::do_op_call(OSDOp& osd_op) return std::make_pair(ret, std::move(outdata)); } ).then( - [prev_rd = num_read, prev_wr = num_write, this, &osd_op, flags] + [this, prev_rd, prev_wr, &osd_op, flags] (auto outcome) -> call_errorator::future<> { auto& [ret, outdata] = outcome; - + logger().debug("do_op_call: method returned ret={}, outdata.length()={}" + " while num_read={}, num_write={}", + ret, outdata.length(), num_read, num_write); if (num_read > prev_rd && !(flags & CLS_METHOD_RD)) { logger().error("method tried to read object but is not marked RD"); return crimson::ct_error::input_output_error::make(); -- 2.39.5