doc: Created a new User Management doc to replace authentication.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Put architectural details of authentication in to architecture doc.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Restructured auth configuration reference.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Removed auth intro and auth docs and added user management to index.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Removed cephx guide. Replaced by user management.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Removed cephx intro. Moved details to user management, config, and architecture.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Added user management link to quick start.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Added a few comments and links to other relevant docs.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Minor changes.

Removed arch-related comments.
Added links to relevant docs.
Moved limitations to user management.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
doc: Added links. Clarified namespace comments. Added limitations.

Signed-off-by: John Wilkins <john.wilkins@inktank.com>
osd/ReplicatedPG: avoid dereferencing iterator at end()

The preceding loop could terminate with p == snapset.clones.end(), which
we assign to dnewest.  We can't dereference the iterator in that case.

For example:

 start_flush ffe627f3/foo/a/test-rados-api-plana05-22080-18/83 v430'42 uv130 blocking
  snapset b=[b,a]:[a,b]+head
 start_flush no older clones

prev_snapc will be 0, oi.snaps will be [a], p will end up at end(), get
assigned to dnewest, and we'll dereference.  It's only sometime harmful
though because we may still take the right (else) branch...

Fixes: #9294
Signed-off-by: Sage Weil <sage@redhat.com>
osd/ReplicatedPG: do not evict blocked objects

If the object is blocked, that means we are either still promoting it, or
we are in the process of doing a blocking flush.  In both cases, do not
evict it just yet.  For the promotion case in particular this can cause a
very long op delay because we'll have to restart the promotion, and this
can potentially loop indefinitely.

For the flush case, flushes are generally only blocking when the user
explicitly requests it.  In that case, we are not particularly concerned
that we may delay the objects eventual eviction as the user is probably
controlling that anyway (and even if they aren't, the agent will still
try this object again later).

Fixes: #9285
Reported-by: Wang, Zhiqiang <zhiqiang.wang@intel.com>
Signed-off-by: Sage Weil <sage@redhat.com>
mds: Fix Session::get_request_count

Signed-off-by: John Spray <john.spray@redhat.com>
mds: cap and lease count in `session ls` asok

Signed-off-by: John Spray <john.spray@redhat.com>
include/CompatSet: make merge const()

With usual shenanigans to deal with [] on map
not being const-safe.

Signed-off-by: John Spray <john.spray@redhat.com>
mds: extract beacon state from MDS lock

For clarity, give it its own class for the
state protected by the separate lock too.

Fixes: #9152

Signed-off-by: John Spray <john.spray@redhat.com>
mds: promote Beacon to be a Dispatcher

This allows it to handle its own MSG_MDS_BEACON
messages from the mon, outside of mds_lock.

This is less important than the sending of beacons
being outside the lock, but still nice to have and
gets all the beacon messaging in one place.

Signed-off-by: John Spray <john.spray@redhat.com>
include/CompatSet: more const-ness

Signed-off-by: John Spray <john.spray@redhat.com>
mds: const getters in MDLog

Signed-off-by: John Spray <john.spray@redhat.com>
mds: use HeartbeatMap to control beacons

...so that if something hogs mds_lock without
pinging the heartbeat map, we will stop sending
beacons to the mon and it will have the chance
to recognise that we are laggy.

Signed-off-by: John Spray <john.spray@redhat.com>