Skip to content

Commit 31bfc7a

Browse files
committed
crimson/osd: Convert do_recovery() from bool to stop_iteration
Signed-off-by: Matan Breizman <[email protected]> (cherry picked from commit 798a14a)
1 parent 3efe524 commit 31bfc7a

File tree

4 files changed

+17
-22
lines changed

4 files changed

+17
-22
lines changed

src/crimson/osd/osd_operations/background_recovery.cc

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,8 @@ seastar::future<> BackgroundRecoveryT<T>::start()
8181
return interruptor::with_interruption([this] {
8282
return do_recovery();
8383
}, [](std::exception_ptr) {
84-
return seastar::make_ready_future<bool>(false);
85-
}, pg, epoch_started).then([](bool do_recovery) {
86-
if (do_recovery) {
87-
return seastar::stop_iteration::no;
88-
} else {
89-
return seastar::stop_iteration::yes;
90-
}
91-
});
84+
return seastar::make_ready_future<seastar::stop_iteration>(seastar::stop_iteration::yes);
85+
}, pg, epoch_started);
9286
});
9387
});
9488
}
@@ -105,13 +99,13 @@ UrgentRecovery::UrgentRecovery(
10599
{
106100
}
107101

108-
UrgentRecovery::interruptible_future<bool>
102+
UrgentRecovery::interruptible_future<seastar::stop_iteration>
109103
UrgentRecovery::do_recovery()
110104
{
111105
LOG_PREFIX(UrgentRecovery::do_recovery);
112106
DEBUGDPPI("{}: {}", *pg, __func__, *this);
113107
if (pg->has_reset_since(epoch_started)) {
114-
return seastar::make_ready_future<bool>(false);
108+
return seastar::make_ready_future<seastar::stop_iteration>(seastar::stop_iteration::yes);
115109
}
116110

117111
return pg->find_unfound(epoch_started
@@ -121,7 +115,7 @@ UrgentRecovery::do_recovery()
121115
return pg->get_recovery_handler()->recover_missing(
122116
trigger, soid, need, false);
123117
}).then_interruptible([] {
124-
return seastar::make_ready_future<bool>(false);
118+
return seastar::make_ready_future<seastar::stop_iteration>(seastar::stop_iteration::yes);
125119
});
126120
});
127121
}
@@ -157,13 +151,13 @@ PglogBasedRecovery::PglogBasedRecovery(
157151
delay)
158152
{}
159153

160-
PglogBasedRecovery::interruptible_future<bool>
154+
PglogBasedRecovery::interruptible_future<seastar::stop_iteration>
161155
PglogBasedRecovery::do_recovery()
162156
{
163157
LOG_PREFIX(PglogBasedRecovery::do_recovery);
164158
DEBUGDPPI("{}: {}", *pg, __func__, *this);
165159
if (pg->has_reset_since(epoch_started)) {
166-
return seastar::make_ready_future<bool>(false);
160+
return seastar::make_ready_future<seastar::stop_iteration>(seastar::stop_iteration::yes);
167161
}
168162
return pg->find_unfound(epoch_started
169163
).then_interruptible([this] {

src/crimson/osd/osd_operations/background_recovery.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class BackgroundRecoveryT : public PhasedOperationT<T> {
4444
scheduler_class
4545
};
4646
}
47-
using do_recovery_ret_t = typename PhasedOperationT<T>::template interruptible_future<bool>;
47+
using do_recovery_ret_t = typename PhasedOperationT<T>::template interruptible_future<seastar::stop_iteration>;
4848
virtual do_recovery_ret_t do_recovery() = 0;
4949
ShardServices &ss;
5050
const crimson::osd::scheduler::scheduler_class_t scheduler_class;
@@ -71,7 +71,7 @@ class UrgentRecovery final : public BackgroundRecoveryT<UrgentRecovery> {
7171

7272
private:
7373
void dump_detail(Formatter* f) const final;
74-
interruptible_future<bool> do_recovery() override;
74+
interruptible_future<seastar::stop_iteration> do_recovery() override;
7575
const hobject_t soid;
7676
const eversion_t need;
7777
};
@@ -100,7 +100,7 @@ class PglogBasedRecovery final : public BackgroundRecoveryT<PglogBasedRecovery>
100100
return epoch_started;
101101
}
102102
private:
103-
interruptible_future<bool> do_recovery() override;
103+
interruptible_future<seastar::stop_iteration> do_recovery() override;
104104
bool cancelled = false;
105105
};
106106

src/crimson/osd/pg_recovery.cc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,21 @@ void PGRecovery::start_pglogbased_recovery()
4040
pg->set_pglog_based_recovery_op(op.get());
4141
}
4242

43-
PGRecovery::interruptible_future<bool>
43+
PGRecovery::interruptible_future<seastar::stop_iteration>
4444
PGRecovery::start_recovery_ops(
4545
RecoveryBackend::RecoveryBlockingEvent::TriggerI& trigger,
4646
PglogBasedRecovery &recover_op,
4747
size_t max_to_start)
4848
{
4949
LOG_PREFIX(PGRecovery::start_recovery_ops);
50+
5051
assert(pg->is_primary());
5152
assert(pg->is_peered());
5253

5354
if (pg->has_reset_since(recover_op.get_epoch_started()) ||
5455
recover_op.is_cancelled()) {
5556
DEBUGDPP("recovery {} cancelled.", pg->get_pgid(), recover_op);
56-
co_return false;
57+
co_return seastar::stop_iteration::yes;
5758
}
5859
ceph_assert(pg->is_recovering());
5960

@@ -79,7 +80,7 @@ PGRecovery::start_recovery_ops(
7980
if (pg->has_reset_since(recover_op.get_epoch_started()) ||
8081
recover_op.is_cancelled()) {
8182
DEBUGDPP("recovery {} cancelled.", pg->get_pgid(), recover_op);
82-
co_return false;
83+
co_return seastar::stop_iteration::yes;
8384
}
8485
ceph_assert(pg->is_recovering());
8586
ceph_assert(!pg->is_backfilling());
@@ -95,9 +96,9 @@ PGRecovery::start_recovery_ops(
9596
} else {
9697
all_replicas_recovered();
9798
}
98-
co_return false;
99+
co_return seastar::stop_iteration::yes;
99100
}
100-
co_return true;
101+
co_return seastar::stop_iteration::no;
101102
}
102103

103104
size_t PGRecovery::start_primary_recovery_ops(

src/crimson/osd/pg_recovery.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class PGRecovery : public crimson::osd::BackfillState::BackfillListener {
3434
virtual ~PGRecovery() {}
3535
void start_pglogbased_recovery();
3636

37-
interruptible_future<bool> start_recovery_ops(
37+
interruptible_future<seastar::stop_iteration> start_recovery_ops(
3838
RecoveryBackend::RecoveryBlockingEvent::TriggerI&,
3939
crimson::osd::PglogBasedRecovery &recover_op,
4040
size_t max_to_start);

0 commit comments

Comments
 (0)