From 0e223fdf43561811dc4ad4fa29979e9f0722fa7f Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 22 Feb 2024 16:54:54 -0500 Subject: [PATCH] rgw/aio: avoid infinite recursion in aio_abstract() a recent regression from 320a2179a3c6c1981a0fd2494938515997c1bfad causes aio_abstract() to recurse when given an empty optional_yield. this is exposed by the librgw_file tests Fixes: https://tracker.ceph.com/issues/64543 Signed-off-by: Casey Bodley --- src/rgw/rgw_aio.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_aio.cc b/src/rgw/rgw_aio.cc index 1bc50c89229c0..293dea13217cb 100644 --- a/src/rgw/rgw_aio.cc +++ b/src/rgw/rgw_aio.cc @@ -59,7 +59,7 @@ Aio::OpFunc aio_abstract(librados::IoCtx ctx, Op&& op, jspan_context* trace_ctx (void)trace_ctx; // suppress unused trace_ctx warning. until we will support the read op trace r.result = ctx.aio_operate(r.obj.oid, s->c, &op, &r.data); } else { - r.result = ctx.aio_operate(r.obj.oid, s->c, &op, trace_ctx); + r.result = ctx.aio_operate(r.obj.oid, s->c, &op, 0, trace_ctx); } if (r.result < 0) { // cb() won't be called, so release everything here @@ -124,7 +124,7 @@ Aio::OpFunc aio_abstract(librados::IoCtx ctx, Op&& op, optional_yield y, jspan_c return aio_abstract(std::move(ctx), std::forward(op), y.get_io_context(), y.get_yield_context(), trace_ctx); } - return aio_abstract(std::move(ctx), std::forward(op), null_yield, trace_ctx); + return aio_abstract(std::move(ctx), std::forward(op), trace_ctx); } } // anonymous namespace -- 2.39.5