The libradosstriper::RadosStriperImpl::aio_read populates the target
outbl with a static buffer and relies on us reading into it. This was
actually not reliable in the past (it could fail if the rx_buffers
optimization failed due to a retransmit or something else) but nevertheless
libradosstriper requires it to work *at all*.
Resolve this by modifying Objecter to copy the result into any provided
buffer at the lowest layer. This should capture any other such user who
needed this behavior.
On the other hand, it will break any user who inadvertantly reads into a
non-empty bufferlist. Given that any such user would already previously
have seen bad behavior due to the rx_buffers optimization, we expect
there to be 0 such instances.
This test introduces a map gap. What *should* happen is that when there is
such a gap, we cannot import. Previously, the test didn't reliably produce
a map gap at all, and didn't check that import failed--it verified that it
passed.
Fix the test so that it reliably produces a gap *and* reports
min_last_epoch_clean to the mon so we can trim. Then verify we fail to
import, but can with --force. But remove the pg again, because if we
force an import with a map gap the osd will refuse to start.
Fixes: http://tracker.ceph.com/issues/38525 Signed-off-by: Sage Weil <sage@redhat.com>
Sage Weil [Fri, 1 Mar 2019 20:36:35 +0000 (14:36 -0600)]
Merge PR #26692 into master
* refs/pull/26692/head:
test/test_ipaddr: added test for pick_address when ipv4 and ipv6 are enabled
common/pick_address: improves log message when no IP is found
pick_address: error out in dual stack mode if both addr types cannot be provided
mds: Fix use of auto prototype, it is a non std extension
Clang complains:
In file included from /home/jenkins/workspace/ceph-master/src/msg/Message.cc:128:
In file included from /home/jenkins/workspace/ceph-master/src/messages/MFSMap.h:20:
/home/jenkins/workspace/ceph-master/src/mds/FSMap.h:330:49: error: 'auto' not allowed in function prototype
void modify_filesystem(fs_cluster_id_t fscid, auto&& fn)
^~~~
/home/jenkins/workspace/ceph-master/src/mds/FSMap.h:341:37: error: 'auto' not allowed in function prototype
void modify_daemon(mds_gid_t who, auto&& fn)
^~~~
Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
* refs/pull/26638/head:
doc: update documentation for standby-replay
qa: update discontinous map test to use mds freezing
mon: add freeze MDS command
qa: update testing for standby-replay
mon: add setting for fs to enable standby-replay
ceph-mds: obsolete hot-standby option
fs: obsolete standby_for config options
messages/MMDSBeacon: use inline init
mds: avoid unnecessary copy of entity_addrvec_t
mds: use inline init for mds_info_t
mds: use rank from MDSMap always
mds: remove obsolete comment
qa: use SIGTERM when stopping vstart service
Reviewed-by: Sage Weil <sage@redhat.com> Reviewed-by: Zheng Yan <zyan@redhat.com>
xie xingguo [Wed, 27 Feb 2019 07:34:46 +0000 (15:34 +0800)]
msg/async/Protocol*: send keep alive if existing wins
This is a follow-up fix of https://github.com/ceph/ceph/pull/25754.
It turns out the existing connection would win the connection race
and then be stuck in the __replacing__ stage forever without being
aware of that the underlying Pipe is actually broken.
Fix by forcing existing sending keepalive periodically __too__.
Sage Weil [Fri, 1 Mar 2019 00:07:25 +0000 (18:07 -0600)]
Merge PR #26667 into master
* refs/pull/26667/head:
cmake: link rgw tests with ${rgw_libs}
cmake: link ${rgw_libs} not rgw_a and rabbitmq
cmake: move rgw tests targets down to end
Sage Weil [Thu, 28 Feb 2019 01:54:16 +0000 (19:54 -0600)]
msg/simple/Pipe: disable rx_buffer code
This reproducibly crashes. Although we don't have a complete understanding
of the exact sequence leading to the crash, we can reproduce, and we have
multiple theoretical cases where it appears to be broken by design.
Fixes: http://tracker.ceph.com/issues/22480 Signed-off-by: Sage Weil <sage@redhat.com>
Ricardo Dias [Thu, 28 Feb 2019 11:02:04 +0000 (11:02 +0000)]
pick_address: error out in dual stack mode if both addr types cannot be provided
When ms_bind_ipv4 and ms_bind_ipv6 options are enabled, if the
public_network or cluster_network settings only contain networks of a
single type (either IPv4 or IPv6) then pick_addresses function must
fail.
Fixes: http://tracker.ceph.com/issues/38307 Signed-off-by: Ricardo Dias <rdias@suse.com>
Lenz Grimmer [Thu, 28 Feb 2019 14:10:42 +0000 (15:10 +0100)]
doc: Updated Ceph Dashboard documentation
Renamed "Ceph Manager Dashboard" to "Ceph Dashboard" in
various locations, replaced "plugin" with "module".
Overhauled the feature list, added more references to configuration
instructions and related components.
Fixed capitalization of subchapters.
Added note about mixed content blocking to the Grafana section.
Removed duplicate content from the dashboard's `README.rst`,
moved some parts (supported browser list) into the documentation
instead.
Patrick Donnelly [Sun, 24 Feb 2019 18:52:05 +0000 (10:52 -0800)]
mon: add freeze MDS command
This is a new hidden command that allows us to do certain testing for race
conditions. A frozen MDS cannot change change state or be replaced by a
standby.
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
Patrick Donnelly [Fri, 22 Feb 2019 00:34:07 +0000 (16:34 -0800)]
fs: obsolete standby_for config options
The operator can no longer configure which rank/fscid/name an MDS wants to
follow or standby for. This was an unfortunately confusing set of config
options as ultimately the MDSMonitor (by default) would set a standby to follow
any fscid/rank if no standby is available that explicitly follows the failed
rank. It is suggested that operators instead use the `standby_count_wanted`
setting on each fs to ensure that sufficient standbys are available.
The temporary effect of this commit is that the MDSMonitor no longer assigns
any standby to standby-replay, to be fixed in the following commits.
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
Patrick Donnelly [Fri, 22 Feb 2019 00:05:55 +0000 (16:05 -0800)]
mds: use rank from MDSMap always
This old bit of code was using standby_for_rank to determine what rank it
should follow but, for the last few releases, the Monitor always sets the the
rank to follow.
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
Sage Weil [Wed, 27 Feb 2019 22:59:47 +0000 (16:59 -0600)]
Merge PR #26595 into master
* refs/pull/26595/head:
osd/PG: log tracked pg refs under debug_refs
osd/PG: include tag in get/put debug lines
osd: clean up oncommit contexts in _process shutdown
Sage Weil [Wed, 27 Feb 2019 22:59:32 +0000 (16:59 -0600)]
Merge PR #26637 into master
* refs/pull/26637/head:
common/ceph_context: experimental kludge for crimson
auth/AuthRegistry: mark 'secure' con mode experimental for now
msg/async: set ms_*_mode to crc only (no secure)