Sage Weil [Sun, 9 Dec 2018 17:44:36 +0000 (11:44 -0600)]
msg/async: preserve peer features when replacing a connection
The features are now stored in the protocol implementation. When we replace
an existing connection, copy those features so that our connect_msg_reply
calculates the correct features for the session.
This fixes an issue where a 3-mon cluster, after upgrading the two followers
but not the leader, was unable to include the (luminous) leader in the
quorum because it was seeing missing features in the connect reply, because
the new mons were replacing an old instance of the connection and weren't
copying the features, and that old instance had connect_msg.features == 0.
Add some debug lines that helped (finally) identify the problem.
Sage Weil [Mon, 19 Nov 2018 14:53:19 +0000 (08:53 -0600)]
messages/MOSDBoot: fix compat with pre-nautilus
We can't make an addr -> addrvec transition without a compat encoding,
unfortunately (I screwed this one up back when then ADDR2 feature was
introduced).
Sage Weil [Mon, 30 Jul 2018 21:35:11 +0000 (16:35 -0500)]
ceph-mon: adjust startup/bind/join sequence to use addrs
- Use the addrvecs in the monmap, and bind accordingly
- If we are joining the cluster, generate sane addrvec for ourselves
- Adjsut warning about mismatched ceph.conf. Note that this may become
noisy for old clusters, mostly because the conf-based mon addr options
are ancient and crufty and should not be used.
Sage Weil [Fri, 13 Jul 2018 14:30:21 +0000 (09:30 -0500)]
mon/MonMap: handle ambiguous mon addrs by trying both legacy and msgr
If we are given a mon addr (a raw IP or hostname) we don't know whether
it is a legacy or msgr2 entity_addr_t. Either infer from the port number
or probe both protocol types.
Sage Weil [Mon, 29 Oct 2018 17:15:54 +0000 (12:15 -0500)]
osd: go active even if mon only accepted our v1 addr
We may bind to v1 and v2 addrs, but we need to behave if the mon only
recognized our v1 addr and still go active. That's because whether they
see our v2 addr depends on whether we connected to the mon via the v1 or
v2 port, and the mon may not be binding to v2 (yet, or ever).
Add a legacy_equals to entity_addrvec_t, and use that instead of
probably_equals for the OSD boot checks. The probably_equals returns true
if the IP address portion of the address is empty.. which should never
happen in the OSD boot case since we have learned our real IP long before
we try to send osd_boot.
Ricardo Dias [Fri, 26 Oct 2018 16:54:48 +0000 (17:54 +0100)]
msg/async: msgr2 protocol placeholder
This commit adds messenger V2 protocol. This V2 protocol is a clone of
the V1 protocol with the additional support for address vectors.
After the banner exchange the peers exchange their address vectors.
Sage Weil [Fri, 26 Oct 2018 21:36:59 +0000 (16:36 -0500)]
msg/async: keep listen addr in ServerSocket, pass to new connections
When we accept a connection, we want to know what listening addr we
accepted on. Because the addr can change after we create teh listening socket
(when we learn the addr and fill in the IP portion), instead store the position
in our myaddrs addrvec.
Greg Farnum [Thu, 20 Dec 2018 18:33:38 +0000 (10:33 -0800)]
doc: Clean up the snapshot consistency note
The old note made it sound like we weren't crash-consistent, and had a
confusing section about needing to clone before mounting.
You *do* need to clone the snapshot before mounting it, but that has
nothing to do fs freezing or consistency.
Yingxin [Wed, 21 Nov 2018 20:39:37 +0000 (04:39 +0800)]
crimson/net: dispatch events in SocketConnection
* move dispatch(), and exception handling logics in accept() and
connect() from SocketMessenger into SocketConnection, so we can manage
the state transition in the same class and at the same abstraction
level.
* gate the dangling futures in SocketConnection, because the
connection's smart_ptr won't be hold by messenger any more during
exception handling.
* don't return close() inside SocketConnection to prevent recursive
gating -- dead lock.
Kefu Chai [Thu, 20 Dec 2018 10:49:43 +0000 (18:49 +0800)]
test/crimson: fix FTBFS of unittest_seastar_perfcounters on arm64
this should address the GCC bug which causes following failure:
/home/jenkins-build/build/workspace/ceph-pull-requests-arm64/src/test/crimson/test_perfcounters.cc:35:9:
internal compiler error: in tsubst_decomp_names, at cp/pt.c:16537
for (const auto &[path, perf_counter_ref] : by_path) {
^~~
Kefu Chai [Thu, 20 Dec 2018 04:51:37 +0000 (12:51 +0800)]
cmake: let rbd_api depend on librbd-tp
whoever includes tracing/librbd.h should depends on librbd-tp.
this fix the FTBFS of:
ceph/src/librbd/librbd.cc:50:10: fatal error: tracing/librbd.h: No such
file or directory
#include "tracing/librbd.h"
^~~~~~~~~~~~~~~~~~
compilation terminated.
src/librbd/CMakeFiles/rbd_api.dir/build.make:62: recipe for target
'src/librbd/CMakeFiles/rbd_api.dir/librbd.cc.o' failed
Sage Weil [Thu, 20 Dec 2018 03:22:35 +0000 (21:22 -0600)]
Merge PR #25360 into master
* refs/pull/25360/head:
qa/workunits/mon/pg_autoscaler: clean up pools afterwards
qa/suites/rados/singletone/all/pg-autoscaler: whitelist health warnings
qa/tasks/ceph: wait for splits/merges before final scrub
mon/OSDMonitor: be tidy with target_size_ratio and pre-nautilus code
mgr/pg_autoscaler: simplify conditions
qa/suites/rados: add simple pg-autoscaler test
qa/workunits/cephtool/test.sh: pg_autoscale_mode=off while testing pg_num etc
doc/rados/operations: document autoscaler and its health warnings
mgr/pg_autoscaler: add pg autoscaler module
pybind/mgr/mgr_util: move format_ helpers out of status module
mon/OSDMonitor: accept optional target_size_{bytes,ratio} to 'osd pool create'
mon/OSDMonitor: remove max_split_count configurable
osd/osd_types: pool_opts_t: int -> int64_t
osd/osd_types: pool_opts: fix whitespace
osd/osd_types: pool_opts_t: make encoding feature-dependent
mgr/devicehealth: pg_num_min 1 for device_health_metrics pool
mon/OSDMonitor: accept optional pg_num_min to 'osd pool create'
mon/OSDMonitor: apply osd_pool_default_pg_autoscale_mode to new pools
pybind/mgr/mgr_module: some accessors
mon/MgrMonitor: enable progress module by default
osd/osd_types: add pool pg_autoscale_mode, pg_num_min, target_size_{bytes,ratio} properties
osdc/Objecter: revise get_latest_version locking
os/memstore: ignore OP_COLL_SET_BITS
qa: generalise REQUIRE_MEMSTORE
mgr: drop GIL in get_config
mon: add 'size' arg to `osd pool create`
mon: use pg_num_target for checks during creation
mgr: revise locking in getter paths
common/options: add `mon_target_pg_per_osd`
mgr: expose OSDMap.pool_raw_used_rate
Florian Haas [Mon, 12 Nov 2018 12:49:15 +0000 (13:49 +0100)]
Improve OpenStack integration and multitenancy docs for radosgw
Add explanatory information on:
* "rgw swift account in url" (including the Swift account in the Swift
API url and Keystone endpoint)
* "rgw swift versioning enabled" (enabling Swift object versioning)
* "rgw s3 auth use keystone" (enabling S3 authentication against
Keystone)
* "rgw keystone implicit tenants" (multi-tenancy via Keystone, including
its implications for the Swift and S3 APIs)