mirror of
https://github.com/ceph/ceph
synced 2025-02-21 18:17:42 +00:00
Merge pull request #13755 from liewegas/wip-19131
osd/osd_internal_types: wake snaptrimmer on put_read lock, too Reviewed-by: Josh Durgin <jdurgin@redhat.com>
This commit is contained in:
commit
3580d224d7
3
qa/suites/rados/thrash/thrashers/none.yaml
Normal file
3
qa/suites/rados/thrash/thrashers/none.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
tasks:
|
||||
- install:
|
||||
- ceph:
|
@ -254,35 +254,6 @@ public:
|
||||
rwstate.put_read(ls);
|
||||
rwstate.recovery_read_marker = false;
|
||||
}
|
||||
void put_read(list<OpRequestRef> *to_wake) {
|
||||
rwstate.put_read(to_wake);
|
||||
}
|
||||
void put_excl(list<OpRequestRef> *to_wake,
|
||||
bool *requeue_recovery,
|
||||
bool *requeue_snaptrimmer) {
|
||||
rwstate.put_excl(to_wake);
|
||||
if (rwstate.empty() && rwstate.recovery_read_marker) {
|
||||
rwstate.recovery_read_marker = false;
|
||||
*requeue_recovery = true;
|
||||
}
|
||||
if (rwstate.empty() && rwstate.snaptrimmer_write_marker) {
|
||||
rwstate.snaptrimmer_write_marker = false;
|
||||
*requeue_snaptrimmer = true;
|
||||
}
|
||||
}
|
||||
void put_write(list<OpRequestRef> *to_wake,
|
||||
bool *requeue_recovery,
|
||||
bool *requeue_snaptrimmer) {
|
||||
rwstate.put_write(to_wake);
|
||||
if (rwstate.empty() && rwstate.recovery_read_marker) {
|
||||
rwstate.recovery_read_marker = false;
|
||||
*requeue_recovery = true;
|
||||
}
|
||||
if (rwstate.empty() && rwstate.snaptrimmer_write_marker) {
|
||||
rwstate.snaptrimmer_write_marker = false;
|
||||
*requeue_snaptrimmer = true;
|
||||
}
|
||||
}
|
||||
void put_lock_type(
|
||||
ObjectContext::RWState::State type,
|
||||
list<OpRequestRef> *to_wake,
|
||||
@ -290,14 +261,25 @@ public:
|
||||
bool *requeue_snaptrimmer) {
|
||||
switch (type) {
|
||||
case ObjectContext::RWState::RWWRITE:
|
||||
return put_write(to_wake, requeue_recovery, requeue_snaptrimmer);
|
||||
rwstate.put_write(to_wake);
|
||||
break;
|
||||
case ObjectContext::RWState::RWREAD:
|
||||
return put_read(to_wake);
|
||||
rwstate.put_read(to_wake);
|
||||
break;
|
||||
case ObjectContext::RWState::RWEXCL:
|
||||
return put_excl(to_wake, requeue_recovery, requeue_snaptrimmer);
|
||||
rwstate.put_excl(to_wake);
|
||||
break;
|
||||
default:
|
||||
assert(0 == "invalid lock type");
|
||||
}
|
||||
if (rwstate.empty() && rwstate.recovery_read_marker) {
|
||||
rwstate.recovery_read_marker = false;
|
||||
*requeue_recovery = true;
|
||||
}
|
||||
if (rwstate.empty() && rwstate.snaptrimmer_write_marker) {
|
||||
rwstate.snaptrimmer_write_marker = false;
|
||||
*requeue_snaptrimmer = true;
|
||||
}
|
||||
}
|
||||
bool is_request_pending() {
|
||||
return (rwstate.count > 0);
|
||||
|
Loading…
Reference in New Issue
Block a user