osd/ReplicatedPG: do not hit_set_persist while potentially backfilling hit_set_*

The hit_set transactions may include both a modify of the new hit_set and
deletion of an old one, spanning the backfill boundary, and we may end up
sending a backfill target a blank transaction that does not correctly
remove the old object.  Later it will notice the stray object and
throw an assertion.

Fix this by skipping hit_set_persist() if any of the backfill targets are
still working on the very first hash value in the PG (which is where all
of the hit_set objects live).  This is coarse but simple.

Another solution would be to send separate ops for the trim/deletion and
new hit_set update, but that is a bit more complex and a bit more
runtime overhead (twice the messages).

Fixes: #7983
Signed-off-by: Sage Weil <sage@inktank.com>
ceph-post-file: fix installation of ssh key files

Fixes: #7992
Signed-off-by: Sage Weil <sage@inktank.com>
Merge pull request #1604 from ceph/wip-7992

ceph-post-file: fix installation of ssh key files
Merge pull request #1603 from ceph/wip-7983

osd/ReplicatedPG: do not hit_set_persist while potentially backfilling hit_set_*

Reviewed-by: Samuel Just <sam.just@inktank.com>
ceph-post-file: use getopt for multiple options, add longopts to help

Fixes: #7993
Signed-off-by: Dan Mick <dan.mick@inktank.com>
Merge pull request #1605 from ceph/wip-7993

ceph-post-file: use getopt for multiple options, add longopts to help

Reviewed-by: Sage Weil <sage@inktank.com>
ReplicatedPG: use clone_overlap for stat update on promote/evict

Fixes: #7964
Signed-off-by: Samuel Just <sam.just@inktank.com>
Merge remote-tracking branches 'origin/wip-sam-testing2', 'upstream/wip-7659', 'origin/wip-7904', 'origin/wip-7916', 'origin/wip-7942' and 'origin/wip-7964' into wip-sam-testing