OSDMonitor: return EEXIST if users try to do a PG merge

This was returning a machine-code success if users tried to merge, and
was erroneously (but harmlessly) increasing the pool's last_change
marker even though it wasn't actually changing anything.

Backport: emperor

Signed-off-by: Greg Farnum <greg@inktank.com>
OSDMonitor: prevent extreme multipliers on PG splits

Fixes: #6922
Backport: emperor

Signed-off-by: Greg Farnum <greg@inktank.com>
OSDMap: use unsigned instead of int for OSD counts

These functions can never return <0, so use unsigned.

Signed-off-by: Greg Farnum <greg@inktank.com>
OSDMonitor: use a different approach to prevent extreme multipliers on PG splits

Signed-off-by: Greg Farnum <greg@inktank.com>
FileSTore: do not time out threads while they're waiting for op throttle

In order to support this, we pass TPHandle* through the ObjectStore
interface, and then if we have one we suspend the timeouts while
waiting to get our op/byte throttles in the FileStore.
The OSD uses this when doing PG splits.

Signed-off-by: Greg Farnum <greg@inktank.com>
Merge pull request #886 from ceph/wip-6922

Fix some pg_num change return codes and make them more resistant to mis-use

Reviewed-by: Sage Weil <sage@inktank.com>