1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
classDiagram
class PG {
-spg_t pg_id
-OSDService* osd
-CephContext* cct
-PGBackend* pgbackend
-ObjectStore::CollectionHandle ch
-RecoveryState recovery_state
-PGLog pg_log
-IndexedLog projected_log
-eversion_t last_update
-epoch_t last_epoch_started
-set~pg_shard_t~ up
-set~pg_shard_t~ acting
-map~hobject_t,ObjectContext*~ object_contexts
-Mutex pg_lock
-Cond pg_cond
-list~OpRequestRef~ waiting_for_peered
-list~OpRequestRef~ waiting_for_active
-map~eversion_t,list~OpRequestRef~~ waiting_for_ondisk
+do_request(OpRequestRef op)
+do_op(OpRequestRef op)
+do_sub_op(OpRequestRef op)
+execute_ctx(OpContext* ctx)
+issue_repop(RepGather* repop)
+eval_repop(RepGather* repop)
+start_recovery_ops()
+recover_object()
+on_change(ObjectStore::Transaction* t)
+activate()
+clean_up_local()
}
class RecoveryState {
-PG* pg
-RecoveryMachine machine
-boost::statechart::state_machine base
+handle_event(const boost::statechart::event_base& evt)
+process_peering_events()
+advance_map()
+need_up_thru()
}
class PGLog {
-IndexedLog log
-eversion_t tail
-eversion_t head
-list~pg_log_entry_t~ pending_log
-set~eversion_t~ pending_dups
+add(pg_log_entry_t& entry)
+trim(eversion_t trim_to)
+merge_log(ObjectStore::Transaction* t)
+write_log_and_missing()
}
class PGBackend {
-PG* parent
-ObjectStore* store
-CephContext* cct
+submit_transaction()
+objects_list_partial()
+objects_list_range()
+objects_get_attr()
+objects_read_sync()
+be_deep_scrub()
}
PG --> RecoveryState
PG --> PGLog
PG --> PGBackend
|