From fd46b2d92ae0d3e09e23ab022f08c8e2eb33251d Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 13 Jan 2016 16:40:22 -0800 Subject: [PATCH] rgw: hold reference to req_completion while calling aio_operate() This is a workaround to fix issue with aio_operate() racing with the request completion. This way we make sure completion->release() is called after aio_operate() finishes. Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_metadata.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc index 9e263e4dbc08f..97a5a5ce0e2cf 100644 --- a/src/rgw/rgw_metadata.cc +++ b/src/rgw/rgw_metadata.cc @@ -240,11 +240,15 @@ int RGWMetadataLog::get_info_async(int shard_id, RGWMetadataLogInfo *info, RGWCo RGWMetadataLogInfoCompletion *req_completion = new RGWMetadataLogInfoCompletion(info, completion_manager, user_info, pret); + req_completion->get(); + int ret = store->time_log_info_async(req_completion->get_io_ctx(), oid, req_completion->get_header(), req_completion->get_completion()); if (ret < 0) { return ret; } + req_completion->put(); + return 0; } -- 2.39.5