@@ -64,7 +64,7 @@ class OsdStatusHook : public AdminSocketHook {
6464 f->open_object_section (" status" );
6565 osd.dump_status (f.get ());
6666 f->close_section ();
67- return seastar::make_ready_future< tell_result_t >( std::move (f) );
67+ co_return std::move (f);
6868 }
6969private:
7070 const crimson::osd::OSD& osd;
@@ -89,9 +89,8 @@ class SendBeaconHook : public AdminSocketHook {
8989 {
9090 LOG_PREFIX (AdminSocketHook::SendBeaconHook);
9191 DEBUG (" " );
92- return osd.send_beacon ().then ([] {
93- return seastar::make_ready_future<tell_result_t >();
94- });
92+ co_await osd.send_beacon ();
93+ co_return tell_result_t ();
9594 }
9695private:
9796 crimson::osd::OSD& osd;
@@ -137,7 +136,7 @@ class RunOSDBenchHook : public AdminSocketHook {
137136 INFO (" block 'size' values are capped at {}. If you wish to use"
138137 " a higher value, please adjust 'osd_bench_max_block_size'" ,
139138 byte_u_t (max_block_size));
140- return seastar::make_ready_future< tell_result_t > (-EINVAL, " block size too large" );
139+ co_return tell_result_t (-EINVAL, " block size too large" );
141140 } else if (bsize < (1LL << 20 )) {
142141 // entering the realm of small block sizes.
143142 // limit the count to a sane value, assuming a configurable amount of
@@ -147,7 +146,7 @@ class RunOSDBenchHook : public AdminSocketHook {
147146 if (count > max_count) {
148147 INFO (" bench count {} > osd_bench_small_size_max_iops {}" ,
149148 count, max_count);
150- return seastar::make_ready_future< tell_result_t > (-EINVAL, " count too large" );
149+ co_return tell_result_t (-EINVAL, " count too large" );
151150 }
152151 } else {
153152 // 1MB block sizes are big enough so that we get more stuff done.
@@ -167,31 +166,28 @@ class RunOSDBenchHook : public AdminSocketHook {
167166 " with a higher value if you wish to use a higher 'count'." ,
168167 max_count, byte_u_t (bsize), local_conf ()->osd_bench_small_size_max_iops ,
169168 duration);
170- return seastar::make_ready_future< tell_result_t > (-EINVAL, " count too large" );
169+ co_return tell_result_t (-EINVAL, " count too large" );
171170 }
172171 }
173172 if (osize && bsize > osize) {
174173 bsize = osize;
175174 }
176175
177- return osd.run_bench (count, bsize, osize, onum).then (
178- [format, bsize, count](double elapsed) {
179- if (elapsed < 0 ) {
180- return seastar::make_ready_future<tell_result_t >
181- (elapsed, " bench failed with error" );
182- }
176+ auto elapsed = co_await osd.run_bench (count, bsize, osize, onum);
177+ if (elapsed < 0 ) {
178+ co_return tell_result_t (elapsed, " bench failed with error" );
179+ }
183180
184- unique_ptr<Formatter> f{Formatter::create (format, " json-pretty" , " json-pretty" )};
185- f->open_object_section (" osd_bench_results" );
186- f->dump_int (" bytes_written" , count);
187- f->dump_int (" blocksize" , bsize);
188- f->dump_float (" elapsed_sec" , elapsed);
189- f->dump_float (" bytes_per_sec" , (elapsed > 0 ) ? count / elapsed : 0 );
190- f->dump_float (" iops" , (elapsed > 0 ) ? (count / elapsed) / bsize : 0 );
191- f->close_section ();
192-
193- return seastar::make_ready_future<tell_result_t >(std::move (f));
194- });
181+ unique_ptr<Formatter> f{Formatter::create (format, " json-pretty" , " json-pretty" )};
182+ f->open_object_section (" osd_bench_results" );
183+ f->dump_int (" bytes_written" , count);
184+ f->dump_int (" blocksize" , bsize);
185+ f->dump_float (" elapsed_sec" , elapsed);
186+ f->dump_float (" bytes_per_sec" , (elapsed > 0 ) ? count / elapsed : 0 );
187+ f->dump_float (" iops" , (elapsed > 0 ) ? (count / elapsed) / bsize : 0 );
188+ f->close_section ();
189+
190+ co_return std::move (f);
195191 }
196192private:
197193 crimson::osd::OSD& osd;
@@ -219,7 +215,7 @@ class FlushPgStatsHook : public AdminSocketHook {
219215 uint64_t seq = osd.send_pg_stats ();
220216 unique_ptr<Formatter> f{Formatter::create (format, " json-pretty" , " json-pretty" )};
221217 f->dump_unsigned (" stat_seq" , seq);
222- return seastar::make_ready_future< tell_result_t >( std::move (f) );
218+ co_return std::move (f);
223219 }
224220
225221private:
@@ -244,21 +240,19 @@ class DumpPGStateHistory final: public AdminSocketHook {
244240 DEBUG (" " );
245241 std::unique_ptr<Formatter> fref{
246242 Formatter::create (format, " json-pretty" , " json-pretty" )};
247- Formatter *f = fref.get ();
248- f->open_object_section (" pgstate_history" );
249- f->open_array_section (" pgs" );
250- return pg_shard_manager.for_each_pg ([f](auto &pgid, auto &pg) {
243+ fref->open_object_section (" pgstate_history" );
244+ fref->open_array_section (" pgs" );
245+ co_await pg_shard_manager.for_each_pg ([f = fref.get ()](auto &pgid, auto &pg) {
251246 f->open_object_section (" pg" );
252247 f->dump_stream (" pg" ) << pgid;
253248 const auto & peering_state = pg->get_peering_state ();
254249 f->dump_string (" currently" , peering_state.get_current_state ());
255250 peering_state.dump_history (f);
256251 f->close_section ();
257- }).then ([fref=std::move (fref)]() mutable {
258- fref->close_section ();
259- fref->close_section ();
260- return seastar::make_ready_future<tell_result_t >(std::move (fref));
261252 });
253+ fref->close_section ();
254+ fref->close_section ();
255+ co_return std::move (fref);
262256 }
263257
264258private:
@@ -292,7 +286,7 @@ class DumpPerfCountersHook final: public AdminSocketHook {
292286
293287 crimson::common::local_perf_coll ().dump_formatted (f.get (), false ,
294288 select_labeled_t ::unlabeled, logger, counter);
295- return seastar::make_ready_future< tell_result_t >( std::move (f) );
289+ co_return std::move (f);
296290 }
297291};
298292template std::unique_ptr<AdminSocketHook> make_asok_hook<DumpPerfCountersHook>();
@@ -318,10 +312,9 @@ class AssertAlwaysHook : public AdminSocketHook {
318312 DEBUG (" " );
319313 if (local_conf ().get_val <bool >(" debug_asok_assert_abort" )) {
320314 ceph_assert_always (0 );
321- return seastar::make_ready_future< tell_result_t > ();
315+ co_return tell_result_t ();
322316 } else {
323- return seastar::make_ready_future<tell_result_t >(
324- tell_result_t {-EPERM, " configuration set to disallow asok assert" });
317+ co_return tell_result_t {-EPERM, " configuration set to disallow asok assert" };
325318 }
326319 }
327320};
@@ -344,31 +337,27 @@ class DumpMetricsHook : public AdminSocketHook {
344337 LOG_PREFIX (AdminSocketHook::DumpMetricsHook);
345338 DEBUG (" " );
346339 std::unique_ptr<Formatter> fref{Formatter::create (format, " json-pretty" , " json-pretty" )};
347- auto *f = fref.get ();
348340 std::string prefix;
349341 cmd_getval (cmdmap, " group" , prefix);
350- f->open_object_section (" metrics" );
351- f->open_array_section (" metrics" );
352- return seastar::do_with (std::move (prefix), [f](auto &prefix) {
353- return crimson::reactor_map_seq ([f, &prefix] {
354- for (const auto & [full_name, metric_family]: seastar::scollectd::get_value_map ()) {
355- if (!prefix.empty () && full_name.compare (0 , prefix.size (), prefix) != 0 ) {
356- continue ;
357- }
358- for (const auto & [labels, metric] : metric_family) {
359- if (metric && metric->is_enabled ()) {
360- f->open_object_section (" " ); // enclosed by array
361- DumpMetricsHook::dump_metric_value (f, full_name, *metric, labels.labels ());
362- f->close_section ();
363- }
342+ fref->open_object_section (" metrics" );
343+ fref->open_array_section (" metrics" );
344+ co_await crimson::reactor_map_seq ([f = fref.get (), &prefix] {
345+ for (const auto & [full_name, metric_family]: seastar::scollectd::get_value_map ()) {
346+ if (!prefix.empty () && full_name.compare (0 , prefix.size (), prefix) != 0 ) {
347+ continue ;
348+ }
349+ for (const auto & [labels, metric] : metric_family) {
350+ if (metric && metric->is_enabled ()) {
351+ f->open_object_section (" " ); // enclosed by array
352+ DumpMetricsHook::dump_metric_value (f, full_name, *metric, labels.labels ());
353+ f->close_section ();
364354 }
365355 }
366- });
367- }).then ([fref = std::move (fref)]() mutable {
368- fref->close_section ();
369- fref->close_section ();
370- return seastar::make_ready_future<tell_result_t >(std::move (fref));
356+ }
371357 });
358+ fref->close_section ();
359+ fref->close_section ();
360+ co_return std::move (fref);
372361 }
373362private:
374363 using registered_metric = seastar::metrics::impl::registered_metric;
@@ -515,17 +504,15 @@ class InjectDataErrorHook : public AdminSocketHook {
515504 obj = test_ops_get_object_name (*shard_services.get_map (), cmdmap);
516505 } catch (const std::invalid_argument& e) {
517506 logger ().info (" error during data error injection: {}" , e.what ());
518- return seastar::make_ready_future<tell_result_t >(-EINVAL,
519- e.what ());
507+ co_return tell_result_t (-EINVAL, e.what ());
520508 }
521- return shard_services.get_store ().inject_data_error (obj).then ([=] {
522- logger ().info (" successfully injected data error for obj={}" , obj);
523- ceph::bufferlist bl;
524- bl.append (" ok" sv);
525- return seastar::make_ready_future<tell_result_t >(0 ,
526- std::string{}, // no err
527- std::move (bl));
528- });
509+ co_await shard_services.get_store ().inject_data_error (obj);
510+ logger ().info (" successfully injected data error for obj={}" , obj);
511+ ceph::bufferlist bl;
512+ bl.append (" ok" sv);
513+ co_return tell_result_t (0 ,
514+ std::string{}, // no err
515+ std::move (bl));
529516 }
530517
531518private:
@@ -559,17 +546,15 @@ class InjectMDataErrorHook : public AdminSocketHook {
559546 obj = test_ops_get_object_name (*shard_services.get_map (), cmdmap);
560547 } catch (const std::invalid_argument& e) {
561548 logger ().info (" error during metadata error injection: {}" , e.what ());
562- return seastar::make_ready_future<tell_result_t >(-EINVAL,
563- e.what ());
549+ co_return tell_result_t (-EINVAL, e.what ());
564550 }
565- return shard_services.get_store ().inject_mdata_error (obj).then ([=] {
566- logger ().info (" successfully injected metadata error for obj={}" , obj);
567- ceph::bufferlist bl;
568- bl.append (" ok" sv);
569- return seastar::make_ready_future<tell_result_t >(0 ,
570- std::string{}, // no err
571- std::move (bl));
572- });
551+ co_await shard_services.get_store ().inject_mdata_error (obj);
552+ logger ().info (" successfully injected metadata error for obj={}" , obj);
553+ ceph::bufferlist bl;
554+ bl.append (" ok" sv);
555+ co_return tell_result_t (0 ,
556+ std::string{}, // no err
557+ std::move (bl));
573558 }
574559
575560private:
@@ -594,21 +579,17 @@ class DumpInFlightOpsHook : public AdminSocketHook {
594579 {
595580 LOG_PREFIX (AdminSocketHook::DumpInFlightOpsHook);
596581 DEBUG (" " );
597- unique_ptr<Formatter> fref{
598- Formatter::create (format, " json-pretty" , " json-pretty" )};
599- auto *f = fref.get ();
600- f->open_object_section (" ops_in_flight" );
601- f->open_array_section (" ops_in_flight" );
602- return pg_shard_manager.when_active ()
603- .then ([this , f, fref=std::move (fref)]() mutable {
604- return pg_shard_manager.invoke_on_each_shard_seq ([f](const auto &shard_services) {
582+ std::unique_ptr<Formatter> fref{Formatter::create (format, " json-pretty" , " json-pretty" )};
583+ fref->open_object_section (" ops_in_flight" );
584+ fref->open_array_section (" ops_in_flight" );
585+ co_await pg_shard_manager.when_active ();
586+ co_await pg_shard_manager.invoke_on_each_shard_seq (
587+ [f = fref.get ()](const auto &shard_services) {
605588 return shard_services.dump_ops_in_flight (f);
606- }).then ([fref=std::move (fref)]() mutable {
607- fref->close_section ();
608- fref->close_section ();
609- return seastar::make_ready_future<tell_result_t >(std::move (fref));
610- });
611589 });
590+ fref->close_section ();
591+ fref->close_section ();
592+ co_return std::move (fref);
612593 }
613594private:
614595 const crimson::osd::PGShardManager &pg_shard_manager;
@@ -634,7 +615,7 @@ class DumpHistoricOpsHook : public AdminSocketHook {
634615 op_registry.dump_historic_client_requests (f.get ());
635616 f->close_section ();
636617 f->dump_int (" num_ops" , 0 );
637- return seastar::make_ready_future< tell_result_t >( std::move (f) );
618+ co_return std::move (f);
638619 }
639620private:
640621 const crimson::osd::OSDOperationRegistry& op_registry;
@@ -660,7 +641,7 @@ class DumpSlowestHistoricOpsHook : public AdminSocketHook {
660641 op_registry.dump_slowest_historic_client_requests (f.get ());
661642 f->close_section ();
662643 f->dump_int (" num_ops" , 0 );
663- return seastar::make_ready_future< tell_result_t >( std::move (f) );
644+ co_return std::move (f);
664645 }
665646private:
666647 const crimson::osd::OSDOperationRegistry& op_registry;
@@ -681,19 +662,15 @@ class DumpRecoveryReservationsHook : public AdminSocketHook {
681662 LOG_PREFIX (AdminSocketHook::DumpRecoveryReservationsHook);
682663 DEBUG (" " );
683664 unique_ptr<Formatter> f{Formatter::create (format, " json-pretty" , " json-pretty" )};
684- return seastar::do_with (std::move (f), [this ](auto && f) {
685- f->open_object_section (" reservations" );
686- f->open_object_section (" local_reservations" );
687- return shard_services.local_dump_reservations (f.get ()).then ([&f, this ] {
688- f->close_section ();
689- f->open_object_section (" remote_reservations" );
690- return shard_services.remote_dump_reservations (f.get ()).then ([&f] {
691- f->close_section ();
692- f->close_section ();
693- return seastar::make_ready_future<tell_result_t >(std::move (f));
694- });
695- });
696- });
665+ f->open_object_section (" reservations" );
666+ f->open_object_section (" local_reservations" );
667+ co_await shard_services.local_dump_reservations (f.get ());
668+ f->close_section ();
669+ f->open_object_section (" remote_reservations" );
670+ co_await shard_services.remote_dump_reservations (f.get ());
671+ f->close_section ();
672+ f->close_section ();
673+ co_return std::move (f);
697674 }
698675private:
699676 crimson::osd::ShardServices& shard_services;
0 commit comments