Signed-off-by: Samuel Just <sam.just@inktank.com>
class DeletingState {
Mutex lock;
Cond cond;
- list<Context *> on_deletion_complete;
enum {
QUEUED,
CLEARING_DIR,
public:
DeletingState() :
lock("DeletingState::lock"), status(QUEUED), stop_deleting(false) {}
- void register_on_delete(Context *completion) {
- Mutex::Locker l(lock);
- on_deletion_complete.push_front(completion);
- }
- ~DeletingState() {
- for (list<Context *>::iterator i = on_deletion_complete.begin();
- i != on_deletion_complete.end();
- ++i) {
- (*i)->complete(0);
- }
- }
/// check whether removal was canceled
bool check_canceled() {
flushed = false;
on_applied->push_back(new ContainerContext<FlushStateRef>(flush_trigger));
on_safe->push_back(new ContainerContext<FlushStateRef>(flush_trigger));
- DeletingStateRef del = osd->deleting_pgs.lookup(info.pgid);
- if (del)
- del->register_on_delete(new ContainerContext<FlushStateRef>(flush_trigger));
}
/* Called before initializing peering during advance_map */