From b98950e707f6fe399926d95cf5081c165d5e796f Mon Sep 17 00:00:00 2001 From: David Zafman Date: Wed, 31 Jul 2019 17:39:33 +0000 Subject: [PATCH] osd: Rename dump_reservations to dump_recovery_reservations Signed-off-by: David Zafman --- PendingReleaseNotes | 3 +++ .../osd_internals/recovery_reservation.rst | 8 +++++++ qa/standalone/osd/osd-backfill-prio.sh | 24 +++++++++---------- qa/standalone/osd/osd-recovery-prio.sh | 24 +++++++++---------- src/osd/OSD.cc | 4 ++-- 5 files changed, 37 insertions(+), 26 deletions(-) diff --git a/PendingReleaseNotes b/PendingReleaseNotes index 99127fa629814..5e2660d52dc72 100644 --- a/PendingReleaseNotes +++ b/PendingReleaseNotes @@ -129,3 +129,6 @@ for the command `ceph osd erasure-code-profile set xxx`. * invalid `m` for "reed_sol_r6_op" erasure technique * invalid `m` and invalid `w` for "liber8tion" erasure technique + +* New OSD daemon command dump_recovery_reservations which reveals the + recovery locks held (in_progress) and waiting in priority queues. diff --git a/doc/dev/osd_internals/recovery_reservation.rst b/doc/dev/osd_internals/recovery_reservation.rst index 4ab03192fe554..a24ac1b15eb38 100644 --- a/doc/dev/osd_internals/recovery_reservation.rst +++ b/doc/dev/osd_internals/recovery_reservation.rst @@ -48,6 +48,14 @@ necessary), the primary drops the local reservation and enters the Recovered state. Once all the PGs have reported they are clean, the primary enters the Clean state and marks itself active+clean. +----------------- +Dump Reservations +----------------- + +An OSD daemon command dumps total local and remote reservations:: + + ceph daemon osd. dump_recovery_reservations + -------------- Things to Note diff --git a/qa/standalone/osd/osd-backfill-prio.sh b/qa/standalone/osd/osd-backfill-prio.sh index 2a69ba12d03f9..a089696bb9b4d 100755 --- a/qa/standalone/osd/osd-backfill-prio.sh +++ b/qa/standalone/osd/osd-backfill-prio.sh @@ -157,7 +157,7 @@ function TEST_backfill_priority() { ceph osd pool set $pool3 size 2 sleep 2 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1 # 3. Item is in progress, adjust priority with no higher priority waiting for i in $(seq 1 $max_tries) @@ -172,18 +172,18 @@ function TEST_backfill_priority() { sleep 2 done flush_pg_stats || return 1 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1 ceph osd out osd.$chk_osd1_2 sleep 2 flush_pg_stats || return 1 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1 ceph pg dump pgs ceph osd pool set $pool2 size 2 sleep 2 flush_pg_stats || return 1 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1 cat $dir/out ceph pg dump pgs @@ -222,7 +222,7 @@ function TEST_backfill_priority() { sleep 2 done sleep 2 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1 cat $dir/out PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG2}\")).prio") if [ "$PRIO" != "$FORCE_PRIO" ]; @@ -235,7 +235,7 @@ function TEST_backfill_priority() { # 4. Item is in progress, if higher priority items waiting prempt item ceph pg cancel-force-backfill $PG3 || return 1 sleep 2 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1 cat $dir/out PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG3}\")).prio") if [ "$PRIO" != "$degraded_prio" ]; @@ -260,14 +260,14 @@ function TEST_backfill_priority() { ceph pg cancel-force-backfill $PG2 || return 1 sleep 5 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1 # 2. Item is queued, re-queue and preempt because new priority higher than an in progress item flush_pg_stats || return 1 ceph pg force-backfill $PG3 || return 1 sleep 2 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1 cat $dir/out PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG2}\")).prio") if [ "$PRIO" != "$degraded_prio" ]; @@ -293,7 +293,7 @@ function TEST_backfill_priority() { ceph osd unset noout ceph osd unset nobackfill - wait_for_clean "CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations" || return 1 + wait_for_clean "CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations" || return 1 ceph pg dump pgs @@ -321,7 +321,7 @@ function TEST_backfill_priority() { # pool 2 with recovery_priority 2 # # Start backfill by changing the pool sizes from 1 to 2 -# Use dump_reservations to verify priorities +# Use dump_recovery_reservations to verify priorities function TEST_backfill_pool_priority() { local dir=$1 local pools=3 # Don't assume the first 2 pools are exact what we want @@ -430,10 +430,10 @@ function TEST_backfill_pool_priority() { ceph osd pool set $pool1 size 2 ceph osd pool set $pool2 size 2 sleep 5 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/dump.${chk_osd1_1}.out + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/dump.${chk_osd1_1}.out echo osd.${chk_osd1_1} cat $dir/dump.${chk_osd1_1}.out - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_2}) dump_reservations > $dir/dump.${chk_osd1_2}.out + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_2}) dump_recovery_reservations > $dir/dump.${chk_osd1_2}.out echo osd.${chk_osd1_2} cat $dir/dump.${chk_osd1_2}.out diff --git a/qa/standalone/osd/osd-recovery-prio.sh b/qa/standalone/osd/osd-recovery-prio.sh index d246dda66db1a..fb386e265ab35 100755 --- a/qa/standalone/osd/osd-recovery-prio.sh +++ b/qa/standalone/osd/osd-recovery-prio.sh @@ -152,7 +152,7 @@ function TEST_recovery_priority() { # to be preempted. ceph osd pool set $pool3 size 2 sleep 2 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1 # 3. Item is in progress, adjust priority with no higher priority waiting for i in $(seq 1 $max_tries) @@ -167,18 +167,18 @@ function TEST_recovery_priority() { sleep 2 done flush_pg_stats || return 1 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1 ceph osd out osd.$chk_osd1_2 sleep 2 flush_pg_stats || return 1 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1 ceph pg dump pgs ceph osd pool set $pool2 size 2 sleep 2 flush_pg_stats || return 1 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1 cat $dir/out ceph pg dump pgs @@ -217,7 +217,7 @@ function TEST_recovery_priority() { sleep 2 done sleep 2 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1 cat $dir/out PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG2}\")).prio") if [ "$PRIO" != "$FORCE_PRIO" ]; @@ -232,7 +232,7 @@ function TEST_recovery_priority() { ceph pg cancel-force-recovery $PG3 || return 1 sleep 2 #ceph osd set norecover - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1 cat $dir/out PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG3}\")).prio") if [ "$PRIO" != "$NORMAL_PRIO" ]; @@ -257,14 +257,14 @@ function TEST_recovery_priority() { ceph pg cancel-force-recovery $PG2 || return 1 sleep 5 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations || return 1 # 2. Item is queued, re-queue and preempt because new priority higher than an in progress item flush_pg_stats || return 1 ceph pg force-recovery $PG3 || return 1 sleep 2 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/out || return 1 + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/out || return 1 cat $dir/out PRIO=$(cat $dir/out | jq "(.local_reservations.queues[].items[] | select(.item == \"${PG2}\")).prio") if [ "$PRIO" != "$NORMAL_PRIO" ]; @@ -290,7 +290,7 @@ function TEST_recovery_priority() { ceph osd unset noout ceph osd unset norecover - wait_for_clean "CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations" || return 1 + wait_for_clean "CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations" || return 1 ceph pg dump pgs @@ -318,7 +318,7 @@ function TEST_recovery_priority() { # pool 2 with recovery_priority 2 # # Start recovery by changing the pool sizes from 1 to 2 -# Use dump_reservations to verify priorities +# Use dump_recovery_reservations to verify priorities function TEST_recovery_pool_priority() { local dir=$1 local pools=3 # Don't assume the first 2 pools are exact what we want @@ -426,10 +426,10 @@ function TEST_recovery_pool_priority() { ceph osd pool set $pool1 size 2 ceph osd pool set $pool2 size 2 sleep 10 - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_reservations > $dir/dump.${chk_osd1_1}.out + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_1}) dump_recovery_reservations > $dir/dump.${chk_osd1_1}.out echo osd.${chk_osd1_1} cat $dir/dump.${chk_osd1_1}.out - CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_2}) dump_reservations > $dir/dump.${chk_osd1_2}.out + CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.${chk_osd1_2}) dump_recovery_reservations > $dir/dump.${chk_osd1_2}.out echo osd.${chk_osd1_2} cat $dir/dump.${chk_osd1_2}.out diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 1829170956971..74d84654c3f3c 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2450,7 +2450,7 @@ will start to track new ops received afterwards."; } f->close_section(); //watchers - } else if (admin_command == "dump_reservations") { + } else if (admin_command == "dump_recovery_reservations") { f->open_object_section("reservations"); f->open_object_section("local_reservations"); service.local_reserver.dump(f); @@ -3320,7 +3320,7 @@ void OSD::final_init() "show clients which have active watches," " and on which objects"); ceph_assert(r == 0); - r = admin_socket->register_command("dump_reservations", "dump_reservations", + r = admin_socket->register_command("dump_recovery_reservations", "dump_recovery_reservations", asok_hook, "show recovery reservations"); ceph_assert(r == 0); -- 2.39.5