diff options
author | David Zafman <david.zafman@inktank.com> | 2013-05-10 16:44:19 -0700 |
---|---|---|
committer | David Zafman <david.zafman@inktank.com> | 2013-05-10 16:45:34 -0700 |
commit | ea0e0c7e34f6b99ecb123d0ee761f653e7e6bc04 (patch) | |
tree | 2df957c71bf1d6f13b8fc0f1bbb9244e11e27048 /doc | |
parent | 7b408537c4986153a54dc090f8872f72904f5d4d (diff) | |
parent | 00e903160b33fe0a2195fe9c86ed24350944bdea (diff) | |
download | ceph-ea0e0c7e34f6b99ecb123d0ee761f653e7e6bc04.tar.gz |
Merge branch 'wip-4273'
Reviewed-by: Sam Just <sam.just@inktank.com>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/dev/osd_internals/backfill_reservation.rst | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/doc/dev/osd_internals/backfill_reservation.rst b/doc/dev/osd_internals/backfill_reservation.rst index 9918360c49d..1fa2d074147 100644 --- a/doc/dev/osd_internals/backfill_reservation.rst +++ b/doc/dev/osd_internals/backfill_reservation.rst @@ -10,9 +10,9 @@ incoming backfills on a single node. Each OSDService now has two AsyncReserver instances: one for backfills going from the osd (local_reserver) and one for backfills going to the osd (remote_reserver). An AsyncReserver (common/AsyncReserver.h) manages a queue -of waiting items and a set of current reservation holders. When a slot frees -up, the AsyncReserver queues the Context* associated with the next item in the -finisher provided to the constructor. +by priority of waiting items and a set of current reservation holders. When a +slot frees up, the AsyncReserver queues the Context* associated with the next +item on the highest priority queue in the finisher provided to the constructor. For a primary to initiate a backfill, it must first obtain a reservation from its own local_reserver. Then, it must obtain a reservation from the backfill @@ -25,3 +25,10 @@ ReplicaActive. It's important that we always grab the local reservation before the remote reservation in order to prevent a circular dependency. + +We want to minimize the risk of data loss by prioritizing the order in which +PGs are recovered. We use 3 AsyncReserver priorities to hand out reservations. +The highest priority is log based recovery (RECOVERY) since this must always +complete before backfill can start. The next priority is backfill of degraded +PGs (BACKFILL_HIGH). The lowest priority is backfill of non-degraded PGs +(BACKFILL_LOW). |