on_flush() requeues waiting_for_peered, but we flush twice on the
primary during peering, and we don't want to requeue the first one
(when we have the master pg log merged).
Fix by moving waiting_for_peered to waiting_for_flush if we aren't
already flush on _activate_committed. If we get an op and are
peered but not flushed, queue ops there. (We can simplify this
check a bit since pgbackend inactive message handling doesn't care
about flushed or not flushed.) When flushed, we requeue
waiting_for_flush.
The waiting_for_flush, waiting_for_peered, and waiting_for_active
lists are all mutually exclusive, so this mostly serves to
clarify what we are waiting for (not to keep items separate). And
it means that on_flushed() will only requeue things that were
waiting for it specifically.
Fixes: http://tracker.ceph.com/issues/21407 Signed-off-by: Sage Weil <sage@redhat.com>