ExtentPlacementManager::BackgroundProcess::reserve_projected_usage(
projected_usage_t usage)
{
- ceph_assert(is_ready());
+ if (!is_ready()) {
+ return seastar::now();
+ }
ceph_assert(!blocking_io);
// The pipeline configuration prevents another IO from entering
// prepare until the prior one exits and clears this.
ceph_assert(!blocking_io);
auto res = try_reserve(usage);
if (res.is_successful()) {
- assert(stats.io_blocking_num > 0);
+ assert(stats.io_blocking_num == 1);
--stats.io_blocking_num;
return seastar::make_ready_future<seastar::stop_iteration>(
seastar::stop_iteration::yes);
seastar::future<> reserve_projected_usage(projected_usage_t usage);
void release_projected_usage(projected_usage_t usage) {
- ceph_assert(is_ready());
- trimmer->release_inline_usage(usage.inline_usage);
- cleaner->release_projected_usage(usage.inline_usage + usage.ool_usage);
+ if (is_ready()) {
+ trimmer->release_inline_usage(usage.inline_usage);
+ cleaner->release_projected_usage(usage.inline_usage + usage.ool_usage);
+ }
}
seastar::future<> stop_background();