Sage Weil [Thu, 24 Oct 2019 23:56:04 +0000 (18:56 -0500)]
mon: fix tell to hybrid octopus/pre-octopus mons
We can't decide whether to use the new tell command style based on the
monmap.min_mon_release alone because some mons may be octopus even though
that hasn't updated yet. The same goes for if we look at the combined
features for the cluster--the underlying problem is the monmap doesn't
tell us which mons are octopus and which ones aren't, so we don't know
how to behave.
Instead, allow octopus+ mons to advertise the converted tell commands
going forward, for compatibility with pre-octopus clients (who do the old
style of tell) and for octopus+ clients talking to a min_mon_release <
octopus cluster.
Sage Weil [Thu, 24 Oct 2019 13:41:33 +0000 (08:41 -0500)]
ceph-daemon: only set up crash dir mount if it exists
Sometimes we run containers on a host that doesn't have a crash dir set
up (becuase no daemon has been deployed). Examples include shell and
ceph-volume.
David Zafman [Thu, 24 Oct 2019 18:31:52 +0000 (11:31 -0700)]
ceph-objectstore-tool: call collection_bits() crashes on the meta collection
Skip new check for meta collection
test:
Turn off osd_pool_default_pg_autoscale_mode just like bash tests do
Fix test by checking for new error message
Kefu Chai [Thu, 24 Oct 2019 06:14:40 +0000 (14:14 +0800)]
cmake: support `Seastar_DPDK=ON` option
seastar does not build any 3rd party libraries. but we do. currently, we
build DPDK/SPDK when they are enabled for the messenger backend and
bluestore backend.
in this change, the same function is reused for preparing the DPDK
libraries if `Seastar_DPDK` is enabled. probably we should outsource
this work to install-deps.sh in future, but before that, let's keep
this as a builtin "feature".
Kefu Chai [Thu, 24 Oct 2019 09:35:26 +0000 (17:35 +0800)]
cmake: enable Finddpdk to find DPDK to be built
find_package(dpdk...) is used by seastar to find DPDK if Seastar_DPDK is
enabled. but `build_dpdk()` only exposes `dpdk::dpdk`, and it does not
set the variables like `dpdk_INCLUDE_DIRS` and `dpdk_LIBRARIES` when it
gets called. so we need to adapt Finddpdk to query them from `dpdk::dpdk`
target.
Kefu Chai [Thu, 24 Oct 2019 06:10:32 +0000 (14:10 +0800)]
cmake: define dpdk_LIBRARIES properly
dpdk_LIBRARIES should not be a list of dpdk library target, it should be
a list of paths to them. this also align with the definition of
`Finddpdk.cmake` in seastar project. so, if `Seastar_DPDK` is defined,
we should be able to offer the expected `dpdk_LIBRARIES` for seastar, as
our `Finddpdk.cmake` has higher priority than the one in seastar, and is
used when `find_package(dpdk...)` is called.
Kefu Chai [Thu, 24 Oct 2019 06:07:18 +0000 (14:07 +0800)]
cmake: refactor BuildDPDK
* extract `do_export_dpdk()` into a separated function
* no need to check for `dpdk-ext` target before calling `build_dpdk()`,
as the name of this target should be hidden from the caller of this
function.
Kefu Chai [Wed, 23 Oct 2019 08:08:38 +0000 (16:08 +0800)]
crimson: s/ceph/crimson/ in namespace names
to help differentiate the symbols shared by classic and crimson osd,
after this change, all crimson code will live in "crimson::" namespaces.
and in a follow-up change, all classic code used by crimson will live in
"ceph::" namespaces.
so we don't need to include `include/ceph_assert.h` for it. and
presumably, `ceph_assert()` is for fail the application early when it is
not able to recover from a failure, while `assert()` is for debugging.
Sage Weil [Thu, 24 Oct 2019 02:05:42 +0000 (21:05 -0500)]
Merge PR #30859 into master
* refs/pull/30859/head:
auth: EACCES, not EPERM
mon: shunt old tell commands from cli interface to asok
mon: allow mgr to tell mon.foo smart
mon: include quorum features in quorum_status
qa/workunits/mon/caps.sh: fix test
ceph_test_rados_api_cmd: fix MonDescribe test
Merge branch 'vstart-fs-auth' of git://github.com/batrick/ceph into wip-cleanup-mon-asok
test/pybind/test_ceph_argparse: fix tests
vstart: add volume client keys to keyring
vstart: use fs authorize to create master client key
vstart: redirect some output to stderr
vstart: output command strings to stderr
qa/workunits/cephtool/test.sh: fix 'quorum enter' caller
qa: change mon_status calls to quorum_status or tell commands
mon: fix 'heap ...' command
mon: consolidate 'sync force' commands
mon: allow asok commands to return an error code
mon: move 'quorum enter|exit' and 'mon_status' to asok
mon: fix 'smart' asok command
mon: remove old 'config set' and 'injectargs'
Sage Weil [Thu, 24 Oct 2019 00:46:06 +0000 (19:46 -0500)]
Merge PR #31094 into master
* refs/pull/31094/head:
ceph-daemon: remove redundant --privileged
test_ceph_daemon: test unit, enter, shell
ceph-daemon: drop exec
ceph-daemon: fix exit code for run, shell, enter, exec
ceph-daemon: allow optional command for 'enter'
ceph-daemon: fix LANG for 'enter' command
ceph-daemon: allow shell to take optional command
qa/suites/rados/singleton-nomsgr/ceph-daemon: run test_ceph_daemon.sh
qa/standalone/test_ceph_daemon.sh: add new functional tests
test_ceph_daemon.sh: use newer image
ceph-daemon: unconditionally enable and start crash unit
ceph-daemon: fix crash unit cleanup
ceph-daemon: include 'crash' unit/item in 'ls' output
ceph-daemon: fix 'ls'
mgr/orchestrator: s/sdd/ssd/
mgr/ssh: remove stdout/stderr kludges
ceph-daemon: fix ceph-volume command to write stdout to stdout
Samuel Just [Tue, 17 Sep 2019 19:10:52 +0000 (12:10 -0700)]
osd/scheduler: introduce mClockScheduler
mClockScheduler schedules items based on op_scheduler_class
with configured mclock parameters. Items which should be
scheduled immediately (op_scheduler_class::immediate) are placed
into a single queue as it's not clear that there's a reason to
differentiate among them.
A subsequent patch will add support for client provided mclock
params and dmclock request state.
Sage Weil [Wed, 23 Oct 2019 18:36:48 +0000 (13:36 -0500)]
auth: EACCES, not EPERM
EPERM means an operation requires superuser; EACCES more generally means
permission denied. We use EACCES elsewhere for ceph auth denials; use it
here too for consistency. This fixes qa/workunits/mon/caps.sh.
Patrick Donnelly [Wed, 23 Oct 2019 18:11:49 +0000 (11:11 -0700)]
qa: do not check pg count for new data_isolated volume
We don't need to specify the number of PGs for a new data pool anymore
since b1b821f60812dd36e61be115c5ad8223ab51befe and other related
changes. The related health warnings are also deprecated/gone. So this
no longer needs to be done.
Fixes: b1b821f60812dd36e61be115c5ad8223ab51befe Fixes: https://tracker.ceph.com/issues/42436 Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
Laura Paduano [Wed, 16 Oct 2019 11:01:59 +0000 (13:01 +0200)]
mgr/dashboard: Document valid frontend tests
This documentation is supposed to help clarify
when and where different type of tests should
be used by explaining the types and what
they are designed for.
Fixes: https://tracker.ceph.com/issues/42253 Signed-off-by: Patrick Seidensal <pseidensal@suse.com> Signed-off-by: Laura Paduano <lpaduano@suse.com>
Samuel Just [Wed, 11 Sep 2019 20:42:44 +0000 (13:42 -0700)]
src/osd: replace OpQueue abstraction in osd with Scheduler
OpQueue is overkill for mclock based schedulers. The interface doesn't
need to externalize the _strict modifiers, the scheduler can figure that
out from the item itself. Introduce simpler Scheduler interface and add
an adapter for the existing OpQueue based implementations.
Sage Weil [Tue, 22 Oct 2019 15:13:51 +0000 (10:13 -0500)]
Merge PR #30826 into master
* refs/pull/30826/head:
ceph-daemon: deploy: behave when crash keyring isn't provided
ceph-daemon: simplify calls from rm_cluster
ceph-daemon: explicitly wait for mon to start
ceph-daemon: bootstrap finish message
ceph-daemon: shell: LANG=C
ceph-daemon: verify mon IP is valid before continuing
ceph-daemon: cleanly capture stdout, err; log
ceph-daemon: --debug for more log detail
test_ceph_daemon: default to test on 127.0.0.1; accept ip as arg
ceph-daemon: bootstrap: assimilate and minimize input config file
Sage Weil [Tue, 22 Oct 2019 15:10:14 +0000 (10:10 -0500)]
mon: allow mgr to tell mon.foo smart
The mgr profile needs to do a tell command to the mon, which was restricted
to *only* allow_all (*) caps. Additionally allow whitelisted commands,
and whitelist 'smart'. This is somewhat imprecise since it conflates
tell vs cli commands in the MonCap, but since those don't overlap it should
be fine.