Commit Graph

1984 Commits

Author SHA1 Message Date
Jason Dillaman
e920693ff6
Merge pull request #25529 from Songweibin/wip-fix-rbd-migration
librbd: disallow trash restoring when image being migrated

Reviewed-by: Mykola Golub <mgolub@suse.com>
Reviewed-by: Jason Dillaman <dillaman@redhat.com>
2019-01-11 09:03:58 -05:00
songweibin
1f2eef7f1f librbd: disallow trash restoring when image being migrated
Signed-off-by: songweibin <song.weibin@zte.com.cn>
2019-01-08 10:26:06 +08:00
Sage Weil
e069c30cb3 Merge remote-tracking branch 'private/wip-mon-kv-fix' into wip-mimic-4 2019-01-04 14:03:56 -06:00
Sage Weil
251f667ef8 Merge PR #25009 into master
* refs/pull/25009/head:
	librbd: stringify locker name with get_legacy_str()
	osdc/Objecter: fix list_watchers addr rendering to match legacy
	test/crimson: disable unittest_seastar_messenger test
	msg/msg_types: encode entity_addr_t TYPE_ANY as TYPE_LEGACY for pre-nautilus
	client: make blacklist detection handle TYPE_ANY entries
	mon/OSDMonitor: maintain compat output for 'blacklist ls'
	client: maintain compat for {inst,addr}_str in status dump
	qa/tasks/ceph_manager: compare osd flush seq #'s as ints
	qa/suites/fs: make use of simple.yaml where appropriate
	qa/msgr: move msgr factet into generic re-usable dir
	crimson: fix monmap build for seastar
	doc/start/ceph.conf: trim the sample ceph.conf file
	doc/rados/operations: only describe --public-{addr,network} method for adding mons
	PendingReleaseNotes: deprecate 'mon addr'
	doc: fix some 'mon addr' references
	doc/rados/configuration: fix some 'mon addr' references
	doc/rados/configuration/network-config-ref: revise network docs somewhat
	doc/rados/configuration/network-config-ref: remove totally obsolete section
	qa/suites/rados: replace mon_seesaw.py task with a small bash script
	qa/suites/fs/upgrade: don't bind to v2 addrs
	qa/tasks/mon_thrash: avoid 'mon addr' in mon section
	mon/MonClient: disable ms_bind_msgr2 if NAUTILUS feature not set
	osd/OSDMap: maintain compat addr fields
	msg/msg_types: add get_legacy_str()
	mds/MDSMap.h: maintain compat addr field
	mon/MgrMap: maintain compat active_addr field
	mon/MonClient: reconnect to mon if it's addrvec appears to have changed
	qa/tasks/ceph.conf.template: increase mon_mgr_mkfs_grace
	msg/async/ProtocolV2: fill in IP for all peer_addrs
	msg/async: print all addrs on debug lines
	mon/MonMap: no noname- mon name prefix when for_mkfs
	ceph-monstore-tool: print initial monmap
	msg/async/ProtocolV2: advertise ourselves as a v2 addr when using v2 protocol
	msg/async: assert existing protocol matches current protocol
	msg/async: add missing modelines
	mon/MonMap: add missing modeline
	vstart.sh: put mon addrs in mon_host, not 'mon addr'
	msg/async: better debug around conn map lookups and updates
	mon/MonClient: dump initial monmap at debug level 10
	qa/standalone/osd/osd-fast-mark-down: use v1 addr w/ simplemessenger
	qa/tasks/ceph: set initial monmap features with using addrvec addrs
	monmaptool: add --enable-all-features option
	qa/tasks/ceph: only use monmaptool --addv if addr has [,:v]
	qa/tasks/ceph_manager: make get_mon_status use mon addr
	qa/tasks/ceph: keep mon addrs in ctx namespace
	mon/OSDMonitor: log all osd addrs on boot
	msg/simple: behave when v2 and v1 addrs are present at target
	mon/MonClient: warn if global_id changes
	msg/Connection: add warning/note on get_peer_global_id
	mds/MDSDaemon: clean up handle_mds_map debug output a bit
	qa/suites/rados/upgrade: debug mds
	mds/MDSRank: improve is_stale_message to handle addrvecs
	msg/async: make loopback detect when sending to one of our many addrs
	qa/suites/rados/upgrade: no aggressive pg num changes
	mon/OSDMonitor: require nautilus mons for require_osd_release=nautilus
	mon/OSDMonitor: require mimic mons for require_osd_release=mimic
	qa/suites/rados/thrash-old-clients: use legacy addr syntax in ceph.conf
	msg/async: preserve peer features when replacing a connection
	qa/tasks/ceph.py: move methods from teuthology.git into ceph.py directly; support mon bind * options
	mon/MonMap: adjust build_initial behavior for mkfs vs probe
	mon/MonMap: improve ambiguous addr behavior
	qa/suites/rados/upgrade: spread mons a bit
	qa/rados/thrash-old-clients: keep mons on separate hosts
	qa/standalone/mon/misc.sh: tweak test to be more robust
	qa/tasks/mon_seesaw: expect v1/v2 prefix in addr
	osd/OSDMap: fix is_blacklisted() check to assume type ANY
	mon/OSDMonitor: use ANY addr type for blacklisting
	mon/msg_types: TYPE_V1ORV2 -> TYPE_ANY
	qa/workunits/cephtool: fix blacklist test
	qa/suites/upgrade: install old version with only v1 addrs
	common/options: by default, bind to both msgr v1 and v2 addresses
	vstart.sh: add --msgr1, --msgr2, --msgr21 options
	msg/async/ProtocolV2: be flexible with server identity check
	msg/msg_types: fix entity_addrvec_t::parse() with null end arg
	qa/suites/rados/basic/msgr: no msgr2 addrs in initial monmaps
	qa/tasks/ceph: add 'mon_bind_addrvec' and 'mon_bind_msgr2' options
	monmaptool: add --addv argument to pass in addrvec directly
	qa/suites/rados/basic/msgr: do not use msgr2 with simplemessenger
	qa/suites/rados/basic/msgr: async is not experimental
	messages/MOSDBoot: fix compat with pre-nautilus
	mon/MonMap: allow v1 or v2 to be explicitly specified along with part
	msg/msg_types: allow parsing of IPs without assuming v1 vs v2
	msg/msg_types: default parse to v2 addrs
	msg: standarize on v1: and v2: prefixes for *all* entity_addr_t's
	vstart.sh: use msgr2 by default
	mon/MonMap: remove get_addr() methods
	ceph-mon: adjust startup/bind/join sequence to use addrs
	mon: use MonMap::get_addrs() (instead of get_addr())
	mon/MonClient: change pending_cons to addrvec-based map
	mon/MonMap: fix set_addr() caller, kill wrapper
	mon/MonMap: remove addr-based add()
	monmaptool: fix --add to do either legacy or msgr2+legacy
	monmaptool: clean up iterator use a bit
	mon/MonMap: handle ambiguous mon addrs by trying both legacy and msgr
	mon/MonMap: take addrvec for set_initial_members
	mon/MonMap: use addrvecs for test instances
	mon: pass addrvec via MMonJoin
	mon/MonmapMonitor: fix 'mon add' to populate addrvec
	mon/MonMap: addr -> addrvec
	msg/async/ProtocolV2: only update socket_addr if we learned our addr
	osd: go active even if mon only accepted our v1 addr
	test/msgr: add test for msgr2 protocol
	msg/async/ProtocolV2: share socket_addr and all addrs during handshake
	msg/async: print socket_addr for the connection
	msg/async: msgr2 protocol placeholder
	msg/async: move ProtocolV1 class to its own source file
	msg/async: keep listen addr in ServerSocket, pass to new connections
	msg/async/AsyncMessenger: fix set_addr_unknowns

Reviewed-by: Josh Durgin <jdurgin@redhat.com>
2019-01-04 13:42:09 -06:00
Sage Weil
d8d16ba6aa qa/workunits/rados/test_health_warnings: prevent out osds
Fixes: http://tracker.ceph.com/issues/37776
Signed-off-by: Sage Weil <sage@redhat.com>
2018-12-31 11:18:05 -06:00
Sage Weil
b84b8c9c66 qa/workunits/cephtool: fix blacklist test
Signed-off-by: Sage Weil <sage@redhat.com>
2018-12-21 15:31:32 -06:00
Sage Weil
b255e49259 qa/workunits/mon/pg_autoscaler: clean up pools afterwards
This avoids a huge pg merge from 100s to 4, which takes a long time and
makes the teuthology scrub cleanup time out.

Signed-off-by: Sage Weil <sage@redhat.com>
2018-12-19 14:37:01 -06:00
Sage Weil
2cd1ca6625 qa/suites/rados: add simple pg-autoscaler test
Signed-off-by: Sage Weil <sage@redhat.com>
2018-12-18 13:30:54 -06:00
Sage Weil
87828e5cdd qa/workunits/cephtool/test.sh: pg_autoscale_mode=off while testing pg_num etc
Signed-off-by: Sage Weil <sage@redhat.com>
2018-12-18 13:30:54 -06:00
Sage Weil
4d3407ba93 mon/OSDMonitor: remove max_split_count configurable
This isn't really relevant or useful now that the mgr is throttling the
actual pg_num adjustment based on pg_num_target, % misplaced, etc.

Signed-off-by: Sage Weil <sage@redhat.com>
2018-12-18 13:30:54 -06:00
Sage Weil
81160bc202 Merge PR #25190 into master
* refs/pull/25190/head:
	mgr/prometheus: adjust to new 'df' fields
	mon/Monitor: fix newline between df section
	doc: update docs for new ceph df output
	mon/PGMap: break down RAW usage by device class
	mon/PGMap: tweak df headers
	mon/PGMap: GLOBAL -> RAW STORAGE in 'df' output
	mon/PGMap: dump_fs_stats -> dump_cluster_stats

Reviewed-by: Kefu Chai <kchai@redhat.com>
2018-12-18 10:47:52 -06:00
Mykola Golub
b29b4f0c71 qa/workunits/rbd: add trash move/restore mirror test
Signed-off-by: Mykola Golub <mgolub@suse.com>
2018-12-14 16:47:15 +00:00
Sage Weil
738789b057 mon/PGMap: GLOBAL -> RAW STORAGE in 'df' output
Signed-off-by: Sage Weil <sage@redhat.com>
2018-12-07 13:28:07 -06:00
Igor Fedotov
79fd227639 qa: replace raw_bytes_used field access in QA test cases
Signed-off-by: Igor Fedotov <ifedotov@suse.com>
2018-12-06 18:54:21 +03:00
Igor Fedotov
25664c4ccf test: add test coverage for rados df reports
Signed-off-by: Igor Fedotov <ifedotov@suse.com>
2018-12-06 18:54:21 +03:00
Jason Dillaman
6db4c152a6
Merge pull request #25266 from trociny/wip-24608
rbd-ggate: support namespaces

Reviewed-by: Willem Jan Withagen <wjw@digiware.nl>
Reviewed-by: Jason Dillaman <dillaman@redhat.com>
2018-12-05 20:25:54 -05:00
Jason Dillaman
4bc7e0aa84
Merge pull request #25260 from trociny/wip-24609
rbd-nbd: support namespaces

Reviewed-by: Jason Dillaman <dillaman@redhat.com>
2018-12-05 13:24:36 -05:00
Sage Weil
706197a7c7 Merge PR #25272 into master
* refs/pull/25272/head:
	qa: add simple test-volumes.sh workunit and run it from fs/basic_functional
	vstart.sh: create default fs via 'fs volume create'
	mgr/volumes: fix oremote
	mon/MgrMonitor: enable volumes module by default
	mgr: create `volumes` module
	mgr: cleaner constructor for CommandResult
	mgr: block for latest osdmap after command execution
	mgr: add MgrModule.mon_command helper
	ceph_volume_client: enable using existing rados inst
	mon: give ceph-mgr access to 'fs' commands

Reviewed-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Jan Fajerski <jfajerski@suse.com>
2018-11-28 11:34:57 -06:00
Sage Weil
43bf12e12d qa: add simple test-volumes.sh workunit and run it from fs/basic_functional
Signed-off-by: Sage Weil <sage@redhat.com>
2018-11-28 08:54:29 -06:00
Nathan Cutler
6c6ae9e30d qa/workunits/rados/test_librados_build.sh: grab files from explicit git branch
Fixes: https://tracker.ceph.com/issues/37392
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2018-11-27 00:34:17 +01:00
Mykola Golub
d13b4197e4 rbd-ggate: support namespaces
Fixes: http://tracker.ceph.com/issues/24608
Signed-off-by: Mykola Golub <mgolub@suse.com>
2018-11-26 19:47:34 +00:00
Mykola Golub
efae1c7a79 rbd-nbd: support namespaces
Fixes: http://tracker.ceph.com/issues/24609
Signed-off-by: Mykola Golub <mgolub@suse.com>
2018-11-25 19:29:19 +02:00
Kefu Chai
a04691031c
Merge pull request #24858 from jecluis/wip-pr-19983-tests
qa/cephtool: test bounds on pool's `hit_set_*`

Reviewed-by: Kefu Chai <kchai@redhat.com>
2018-11-15 14:12:09 +08:00
Kefu Chai
60dc1c2a32 qa: patch rocksdb the right way
quote from patch(1)

>       but usually just
>
>       patch -pnum <patchfile

Signed-off-by: Kefu Chai <kchai@redhat.com>
2018-11-15 13:03:00 +08:00
Kefu Chai
2dc0f86227 qa: use FOUND_VAR to be backward compatible with cmake 2.8.12
before this change, we assume that the variable set if rados::radospp is
found will be radospp_FOUND, but this is a feature cmake 3, see
https://cmake.org/cmake/help/v3.3/module/FindPackageHandleStandardArgs.html

while the cmake shipped by centos is cmake 2.8.12, where the variable
name will be <UPPERCASED_NAME>_FOUND, see
https://cmake.org/cmake/help/v2.8.12/cmake.html#module:FindPackageHandleStandardArgs

in the test of test_envlibrados_for_rocksdb.sh, we are using cmake not
the cmake3 offered by EPEL7, so RADOSPP_FOUND will be set instead. that's why
executable env_librados_test will fail to link against rados::radospp.
as rados::radospp won't be defined if radospp_FOUND is not defined/set.

after this change, the 2nd mode of FIND_PACKAGE_HANDLE_STANDARD_ARGS()
is used instead to ensure that radospp_FOUND is defined even if cmake
2.8.12 is used.

also, the message() commands for debugging purpose are removed.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2018-11-15 11:57:52 +08:00
Nathan Cutler
0185abfeb4 tests: make ceph-admin-commands.sh log what it does
Fixes: http://tracker.ceph.com/issues/37089
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2018-11-13 19:46:24 +01:00
Kefu Chai
0e5bdd9d56 librados: remove rados_tmap_*
we have switched from tmap to omap long ago.

but keep the server side implementation around, in case ancient
client is still using these tmap APIs.

also, tmap_update() is kept, because librbd is using it for v1 image
backward compatibility.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2018-11-07 14:05:25 -08:00
Jason Dillaman
cc592823fa
Merge pull request #24717 from trociny/wip-rbd-mirror-status-instance
rbd: show info about mirror daemon instance in image mirror status output

Reviewed-by: Jason Dillaman <dillaman@redhat.com>
2018-11-06 11:11:49 -05:00
Mykola Golub
7d2ffd981b rbd: show info about mirror instance in image mirror status output
It is particularly useful when running multiple rbd-mirror instances
in Active-Passive or Active-Active mode.

Signed-off-by: Mykola Golub <mgolub@suse.com>
2018-11-05 22:34:39 +02:00
Mykola Golub
472abc2ed9 test/librbd: migration supporting namespace tests
Signed-off-by: Mykola Golub <mgolub@suse.com>
2018-11-03 19:36:44 +02:00
Kefu Chai
0475dfdea3 qa: update test_envlibrados_for_rocksdb.sh for libradospp split
include a patch so rocksdb can use libradospp instead of librados. will
upstream the patch and make it work for both pre-nautilus librados and
nautilus libradospp

Signed-off-by: Kefu Chai <kchai@redhat.com>
2018-11-02 00:15:31 +08:00
Kefu Chai
3730d10623 librados: move C++ APIs into libradospp
the goal is to decouple C++ API from C API, and to version them
differently, as they are targeting different consumers.

this allows us to change the C++ API and bumping up its soversion
without requiring consumer to recompile the librados client for
using the new librados. in this way, C++ API can move faster than
C API. for example, if bufferlist interface is changed for better
performance, and this breaks existing API/ABI, we can bump up
the C++ library's soversion, and and the C library's version unchanged
but ship the new librados's C binding. so the librados client linked
against librados's C library will be able to take advantage of
the improvement in C++ library. while the librados client
linked against C++ library won't break at runtime due to unresolved
symbol or changed structure layout.

this is massive change, the genereal idea is to

* split librados.cc into two source files: librados_c.cc and
  librados_cxx.cc, the former for implementing C APIs, the later
  for C++ APIs.
* extract the C++ API in librados into librados-cxx, the library
  name will be libradospp. but we can change it before nautilus
  is released.
* link these librados libraries with static libraries which it
  depends on, so "-Wl,--exclude-libs,ALL" link flags can help
  hide the non-public symbols.
* extract the tests exercising librados' C++ API into a different
  source file named *_cxx.cc. for instance, to move the C++ tests
  in aio.cc into aio_cxx.cc
* extract the shared helper functions which do not use any librados
  or librados-cxx APIs into test_shared{.cc,h}. the "shared" here
  means, *shared* by C++ and C tests.
* extract the test fixtures, i.e., the subclasses of testing::Test,
  for testing C++ APIs into testcase_cxx.cc.
* update qa/workunits/rados/test.sh accordingly to add the splitted
  tests
* update the consumers of librados to link against librados-cxx
  instead, if they are using the C++ API.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2018-11-02 00:15:30 +08:00
Joao Eduardo Luis
256ced3586 qa/cephtool: test bounds on pool's hit_set_*
Signed-off-by: Joao Eduardo Luis <joao@suse.de>
2018-10-31 16:05:40 +00:00
Joao Eduardo Luis
5fff611041 mon/config-key: limit caps allowed to access the store
Henceforth, we'll require explicit `allow` caps for commands, or for the
config-key service. Blanket caps are no longer allowed for the
config-key service, except for 'allow *'.

Signed-off-by: Joao Eduardo Luis <joao@suse.de>
2018-10-17 14:42:15 +01:00
Sage Weil
7ac6ab4b2f Merge PR #24494 into master
* refs/pull/24494/head:
	ceph-kvstore-tool: rename repair -> destructive-repair

Reviewed-by: Neha Ojha <nojha@redhat.com>
2018-10-14 13:11:11 -05:00
Sage Weil
8cc6369511 ceph-kvstore-tool: rename repair -> destructive-repair
This is shown to corrupt otherwise healthy rocksdb databases.  Rename to
make it clear that it is generally not safe to run and shoud only be used
as a last resort.

Signed-off-by: Sage Weil <sage@redhat.com>
2018-10-14 11:41:24 -05:00
Jason Dillaman
2a1dca3fca qa/workunits/rbd: switch devstack to rocky branch and tempest to 19.0.0 tag
Fixes: http://tracker.ceph.com/issues/36410
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
2018-10-12 08:40:44 -04:00
Jason Dillaman
ba32395165
Merge pull request #24550 from dillaman/wip-36409
qa/workunits: replace 'realpath' with 'readlink -f' in fsstress.sh

Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
2018-10-12 08:39:37 -04:00
Jason Dillaman
ddb7e5eb80 qa/workunits: replace 'realpath' with 'readlink -f' in fsstress.sh
Fixes: http://tracker.ceph.com/issues/36409
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
2018-10-11 15:25:20 -04:00
Jason Dillaman
c60ffac61e
Merge pull request #24428 from trociny/wip-rbd-config-global
rbd: add 'config global' command to get/store overrides in mon config db

Reviewed-by: Jason Dillaman <dillaman@redhat.com>
2018-10-11 10:50:33 -04:00
Patrick Donnelly
d03a8302b5
Merge PR #23069 into master
* refs/pull/23069/head:
	tests/libcephfs: add simple reclaim test
	mds: check auth name before reclaiming session
	mds: reclaim session before allowing mds to become active
	mds: allow client to specify its session timeout
	mds: initial code for client states reclaim

Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
2018-10-10 15:29:41 -07:00
Mykola Golub
c552f166c3
Merge pull request #24476 from dillaman/wip-35944
librbd: add new configuration option to always move deleted items to the trash

Reviewed-by: Mykola Golub <mgolub@suse.com>
2018-10-10 18:40:14 +03:00
Jason Dillaman
a6a2f395b7
Merge pull request #24512 from trociny/wip-qa-namespace-create_args
qa/workunits/rbd: force v2 image format for namespace test

Reviewed-by: Jason Dillaman <dillaman@redhat.com>
2018-10-10 10:42:08 -04:00
Mykola Golub
b3e4d43c15 rbd: add 'config global' command to get/store overrides in mon config db
Signed-off-by: Mykola Golub <mgolub@suse.com>
2018-10-10 17:31:32 +03:00
Jason Dillaman
97950fec27 qa/workunits/rbd: test new move-to-trash on image remove config override
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
2018-10-10 09:08:03 -04:00
John Spray
67d147c00d
Merge pull request #23622 from renhwztetecs/renhw-wip-25103
mgr: fixup pgs show in unknown state

Reviewed-by: Kefu Chai <kchai@redhat.com>
Reviewed-by: John Spray <john.spray@redhat.com>
2018-10-10 13:28:33 +01:00
Mykola Golub
24e1a6bd47 qa/workunits/rbd: force v2 image format for namespace test
While here, fix test_locking too.

Signed-off-by: Mykola Golub <mgolub@suse.com>
2018-10-10 10:50:30 +03:00
Mykola Golub
f2d72d46d4 qa/workunits/rbd: fix cli generic namespace test
expect_fail incorrectly unset '-e' option and if a consequent test
failed it did not abort the execution. And two typos in the namespace
tests were not detected due to this.

Signed-off-by: Mykola Golub <mgolub@suse.com>
2018-10-07 15:09:25 +03:00
Jeff Layton
9bca82d00e tests/libcephfs: add simple reclaim test
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2018-10-05 10:18:28 -04:00
Kefu Chai
b35f6a533a qa/workunits/mon/test_mon_config_key.py: bump up the size limit
in b38b8e980c, we changed the upper
limit of size of `config key` 's value to 64k, so we need to update
the test accordingly.

Fixes: http://tracker.ceph.com/issues/36260
Signed-off-by: Kefu Chai <kchai@redhat.com>
2018-09-30 16:04:04 +08:00