The _get_mon_log_message() assumes that log_last and log_queue
are in sync, but it was previously possible to increment log_last
setting e.seq in do_log(), and only later queue it. If a racing
thread ran get_mon_log_message() in the meantime it would fail
an assertion.
Fix by assigning the seq and queueing it atomically. If the
cluster log is not enabled, use the get_next_seq() helper so that
graylog or syslog messages still have a seq assigned.
Fixes: http://tracker.ceph.com/issues/18209 Signed-off-by: Sage Weil <sage@redhat.com>