summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorDavid Zafman <david.zafman@inktank.com>2013-05-10 16:44:19 -0700
committerDavid Zafman <david.zafman@inktank.com>2013-05-10 16:45:34 -0700
commitea0e0c7e34f6b99ecb123d0ee761f653e7e6bc04 (patch)
tree2df957c71bf1d6f13b8fc0f1bbb9244e11e27048 /doc
parent7b408537c4986153a54dc090f8872f72904f5d4d (diff)
parent00e903160b33fe0a2195fe9c86ed24350944bdea (diff)
downloadceph-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.rst13
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).