radosgw-admin: fix subuser modify

Shouldn't check for empty access key when modifying swift user, also
set correct fields when updating swift keys.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
rgw: subuser creation can be idempotent

No real reason to check for existing subuser before (re)creating it.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
radosgw-admin: don't always generate access key for subusers

Only generate key for subuser if one was not specified for it, and only
when creating a subuser.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
mailmap: Sandon Van Ness name normalization

Signed-off-by: Loic Dachary <loic@dachary.org>
mailmap: Michael Nelson affiliation

Signed-off-by: Loic Dachary <loic@dachary.org>
mailmap: Paul Meserve affiliation

Signed-off-by: Loic Dachary <loic@dachary.org>
librados: Fix typo for read functions documentation

Signed-off-by: David Zafman <david.zafman@inktank.com>
librados: Allow rados_pool_list() to get NULL buffer if len == 0

Coverity wants a NULL check for buf, but caller should be able to
pass a NULL buf and 0 len in order to get byte count of pool list.

Signed-off-by: David Zafman <david.zafman@inktank.com>
rbd: Prevent Seg fault by checking read result in snap_read_header()

Signed-off-by: David Zafman <david.zafman@inktank.com>
mailmap: Nikola Kotur affiliation

Reviewed-by: Nikola Kotur <kotnick@gmail.com>
Signed-off-by: Loic Dachary <loic@dachary.org>
mailmap: Yan, Zheng name normalization

Signed-off-by: Loic Dachary <loic@dachary.org>
mon/Elector: ignore ACK from peers without required features

If an old peer gets a PROPOSE from us, we need to be sure to ignore their
ACK.  Ignoring their PROPOSEs isn't sufficient to keep them out of a
quorum.

Fixes: #8042
Signed-off-by: Sage Weil <sage@inktank.com>
mon: refresh elector required_features when they change

Currently we only refresh required_features on Elector::start().  This
does not prevent an old peer from calling an election (even though they
won't succeed in joining the resulting quorum).

Fix this by updating the elector's features when they change.  This way we
don't allow a useless election cycle just to trigger that update in
start().

Signed-off-by: Sage Weil <sage@inktank.com>
tools: Improve ceph_scratchtoolpp

Minor output improvements
Remove clone_range code that was asserting

Signed-off-by: David Zafman <david.zafman@inktank.com>
test: Fix Seg fault in ceph_test_rados

Fixes: #8049

Signed-off-by: David Zafman <david.zafman@inktank.com>
osd: Fix appending write to return any error back to caller

Also, correct double bumping of num_writes

Signed-off-by: David Zafman <david.zafman@inktank.com>
mon: ignore sync clients without required_features

If we let them sync data they don't understand they will get confused
and crash.

Signed-off-by: Sage Weil <sage@inktank.com>
mon: move required_features back into Monitor

This is simpler and cleaner.

Signed-off-by: Sage Weil <sage@inktank.com>
mon: tell peers missing features during probe

Use a new probe op to inform mons that they are missing features during
the earliest probe phase.  This prevents them from getting as far as
the sync entirely if they are too old.

We still need to refuse to speak to them if they try to call an election,
which they could do based on their replies from other peers.

Note that old clients will assert on getting a message type string they
don't understand, so we need to be careful not to send the probe reply
to older clients.  The feature bit we use is not precise in that it does
not cover recent dev releases, but it does work for dumpling and emperor.

Signed-off-by: Sage Weil <sage@inktank.com>
Merge pull request #1637 from ceph/wip-8042

mon: fix election required_features checks

Reviewed-by: Greg Farnum <greg@inktank.com>