buffer: use Mutex instead of Spinlock for raw crcs

Signed-off-by: Sage Weil <sage@inktank.com>
mon: fix Session ref leak in handle_get_version

Signed-off-by: Sage Weil <sage@inktank.com>
ReplicatedPG::agent_work: skip hitset objects before getting object context

Otherwise, we might read the attr on a hitset object we are in the
process of deleting.

Fixes: #8086
Signed-off-by: Samuel Just <sam.just@inktank.com>
Make rados/rest bench work for multiple write instances without metadata conflict.
Signed-off-by: Guang Yang <yguang@yahoo-inc.com>
mds: share max size to client who is allowed for WR cap

WR cap is allowed for the loner client when filelock is in excl->mix
state. MDS should share max size with the loner client in this case.
Otherwise the client may wait for the max size forever.

Fixes: #8092
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
mds: Fix respawn (add path resolution)

Previously assumed that ceph-mds executable was in
PWD - now use /proc/self/exe to find the
executable whereever it may be.  Leave in old version
as a fallback for non-linux environments.

Also add a 'respawn' command so that it's easy to test
respawn with `ceph mds tell <id> respawn`

Fixes: #7966
osd: OSDMap: have osdmap json dump print valid boolean instead of string

Fixes: 8108

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
mon/OSDMonitor: require force argument to split a cache pool

There are several perils when splitting a cache pool:

 - split invalidstes pg stats, which disables the agent
 - a scrub must be manually triggered post-split to rebuild stats
 - the pool may fill the OSDs during that period.
 - or, the pool may end up beyond the 'full' mark and once scrub does
   complete and the agent activate we may block IO for a long time while
   we catch up with flush/evict

Make it a bit harder for users to shoot themselves in the foot.

Fixes: #8043
Signed-off-by: Sage Weil <sage@inktank.com>
ReplicatedPG::get_snapset_context: assert snap obj is not missing

Signed-off-by: Samuel Just <sam.just@inktank.com>
Use string instead of char* when saving arguments for rest-bench
mds: fix cap revoke confirmation

when the _revokes list is emptied, it doesn't mean that client has
released the revoking caps. It's possible that client was flusing
dirty metadata.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
mds: dynamically adjust priority of committing dirfrags

Adjust priority of committing dirfrags according to number of
expiring log segments. The more expiring log segments, the higher
priority. Because it mean MDS does not trim log segments quickly
enough.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
osd_types::osd_stat_sum_t: fix floor for num_objects_omap

Introduced in a130a4452e4fb159dc62fb417077d98dc9ebd621
Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD: split pg stats during pg split

Fixes: #8020
Signed-off-by: Samuel Just <sam.just@inktank.com>
Merge pull request #1682 from ceph/wip-8020

OSD: split pg stats during pg split

Reviewed-by: Sage Weil <sage@inktank.com>
Merge pull request #1681 from ceph/wip-8043

mon/OSDMonitor: require force argument to split a cache pool

Reviewed-by: Samuel Just <sam.just@inktank.com>
spelling corrections
Merge pull request #1675 from guangyy/wip-bench

Make rados/rest bench work for multiple write instances without metadata conflict.

Reviewed-by: Greg Farnum <greg@inktank.com>
mon: EBUSY instead of EAGAIN when pgs creating

In 69321bf, EAGAIN changed behaviour to block indefinitely
rather than returning to user.  Change the return for
`osd pool set` operations that are blocked by creating PGs
to return EBUSY instead of EAGAIN, so that they are excepted
from this blocking behaviour.

Signed-off-by: John Spray <john.spray@inktank.com>
mon: set leader commands prior to first election

If we have just started and receive a command, we currently will reply with
EINVAL because the leader commands are empty.  Note that this race is very
difficult to reach because the (old) peon needs to forward a command to
the mon while it still thinks it has quorum, and the message needs to get
sent after the leader mon has restarted and reset its connection but before
it has declared a new election.

To fix this, we should assume at startup time that our commands are
valid.  If it is an internal command that does not require quorum, that
is fine.  If it does require quorum, we will retry the command after the
election completes and we will revalidate the command then.

Fixes: #8132
Signed-off-by: Sage Weil <sage@inktank.com>