Is the following a good enough solution?
Neha Ojha, Josh Durgin, Sam Just - what do you think?
I have drafted a modification to the (post- PR#40984 merge) code:
the '.scrubber' section in the 'pg xx query' command changes
to include scheduling data. Specifically:
(https://github.com/ronen-fr/ceph/commit/354ae990b489eeb717fccfdfde56bd06a403721d )
When the scrubber is not active:
bin/ceph pg 2.4 query | jq '.scrubber'
{
"active": false,
"must_scrub": false,
"must_deep_scrub": false,
"must_repair": false,
"need_auto": false,
"scrub_reg_stamp": "2021-09-26T03:24:51.429331+0000",
"schedule": "scrub scheduled @ 2021-09-26T03:24:51.429331+0000"
}
Note - no 'is-time-for-deep', as this flag is only ever set when scrubbing
starts.
After a deep-scrub request (but before the 'scrub' command):
{
"active": false,
"must_scrub": false,
"must_deep_scrub": false,
"must_repair": false,
"need_auto": false,
"scrub_reg_stamp": "2021-09-26T12:41:21.856538+0000",
"schedule": "deep scrub scheduled @ 2021-09-26T12:41:21.856538+0000"
}
When ripe for scrubbing (either because of one of the 'must' flags, or
when reaching the scheduled time):
{
"active": false,
"must_scrub": false,
"must_deep_scrub": false,
"must_repair": false,
"need_auto": false,
"scrub_reg_stamp": "2021-09-19T19:51:47.491221+0000",
"schedule": "queued for scrub"
}
or
{
"active": false,
"must_scrub": false,
"must_deep_scrub": false,
"must_repair": false,
"need_auto": false,
"scrub_reg_stamp": "2021-09-19T12:10:00.013855+0000",
"schedule": "queued for deep scrub"
}
When deep-scrubbing:
{
"active": true,
"epoch_start": "9",
"start": "2:a0000000::::0",
"end": "2:a0000000::::0",
"m_max_end": "MIN",
"subset_last_update": "0'0",
"deep": true,
"req_scrub": false,
"auto_repair": false,
"check_repair": false,
"deep_scrub_on_error": false,
"priority": 5,
"shallow_errors": 0,
"deep_errors": 0,
"fixed": 0,
"waiting_on_whom": []
}