Commit Graph

43953 Commits

Author SHA1 Message Date
Loic Dachary
5ce7ed1bdd ceph-disk: integration tests for multipath
Add integration tests for multipath to the ceph-disk workunit, with the
following caveats:

A workaround is added (explicit call to ceph-disk activate) until the
CentOS activation bug http://tracker.ceph.com/issues/12786 is fixed.

The tests do not run on Ubuntu because of the multipath / device mapper
bug
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1488688
and it has not been tested on Debian.

http://tracker.ceph.com/issues/11881 Refs: #11881

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
d447098cfc ceph-disk: implement workunit
This new ceph-disk workunit re-implements the tests that previously were
in the src/test/ceph-disk.sh src/test/ceph-disk-root.sh scripts and is
meant to run in a virtual machine instead of docker.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
b04bfd12e2 tests: remove dead scripts
Revert 2d0d388162 which introduced scripts
that were never actually used.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
8c586e63d3 ceph-disk: CentOS 7 is systemd
http://tracker.ceph.com/issues/12786 Fixes: #12786

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
796a1403dc ceph-disk: implement list --format json
The ceph-disk list command is reworked in two parts:

 1) the list_devices function that build an internal structure with all
    the information regarding disks and partitions.
 2) a function to display the internal structure in plain text or json

The ceph-disk list show the plain text version and is backward
compatible.

The ceph-disk list --format json output has more information about each
device than the plain text version and is intended for scripts.

The unit tests cover all modified lines (2610 to 2849).

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
5fd9486c76 ceph-disk: fix dmcrypt typo
Fix the typo introduced by 29431944c7

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
60c22a9353 ceph-disk: cosmetic: setup_logging function
Split the main function to extract the verbose handling part into the
setup_logging function.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
982591a981 ceph-disk: cosmetic: argparse functions
Split the large parse_args function into separate functions, one for
each subparser.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
38d0e7bd55 ceph-disk: use sys.argv instead of implicit
Make parse_args and main use and argument instead of relying on
argparse.ArgumentParser implicit use of sys.argv. It helps with tests.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
9a71816f48 tests: obsolete ceph-disk root tests
They were designed to run in a docker container using loop devices
instead of disks. Although this was fit for ceph-disk activate tests for
regular and dmcrypt devices, a docker instance does not have its own
udev instance it is not possible to run tests involving udev events
without interfering with the host.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
d4869ac9e4 ceph-disk: add multipath support
A multipath device is detected because there is a
/sys/dev/block/M:m/dm/uuid file with the mpath- prefix (or part\w+-mpath
prefix).

When ceph-disk prepares data or journal devices on a multipath device,
it sets the partition typecode to MPATH_JOURNAL_UUID, MPATH_OSD_UUID and
MPATH_TOBE_UUID to

 a) help the udev rules distinguish them from other devices in
    devicemapper
 b) allow ceph-disk to fail if an attempt is made to activate a device
    with this type without accessing it via a multipath device

The 95-ceph-osd.rules call ceph-disk activate on partitions of type
MPATH_JOURNAL_UUID, MPATH_OSD_UUID. It relies on ceph-disk to do nothing
if the device is not accessed via multipath.

http://tracker.ceph.com/issues/11881 Fixes: #11881

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:52 +02:00
Loic Dachary
7e5a69bcd2 ceph-disk: is_held must ignore multipath devices
Always return an empty list when is_held is called on a multipath
device.

The dmcrypt logic base decisions depending on the holders/slaves
relationship. Such relationships can also exists for multipath devices
but do not have the same semantic.

http://tracker.ceph.com/issues/11881 Fixes: #11881

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:51 +02:00
Loic Dachary
a10141809c ceph-disk: rework get_partition_{type,uuid}
Mimic the get_partition_type implementation after get_partition_uuid
and factorize them to reduce the code footprint.

The get_partition_type implementation is based on blkid: it is complex
and fragile. Since sgdisk is consistently used to create partitions, use
it instead. It is already used for get_partition_uuid and there does not
seem to be any reason for concern.

http://tracker.ceph.com/issues/11881 Refs: #11881

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:51 +02:00
Loic Dachary
77ff7c3dc6 ceph-disk: multipath support for split_dev_base_partnum
split_dev_base_partnum returns the path of the whole disk in
/dev/mapper. The base variable name to designate the device for the
whole disk is a misnomer since it cannot be used as a basename to
rebuild the parition device name in the case of multipath.

The logic of split_dev_base_partnum for devices is reworked to use
/sys/dev/block/M:m/partition instead of device name parsing.

http://tracker.ceph.com/issues/11881 Refs: #11881

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:51 +02:00
Loic Dachary
3bc95dfc1b ceph-disk: multipath support for is_partition and list_partitions
The is_partition predicate and the list_partitions function support
devices managed by multipath.

A set of helpers dedicated to multipath devices is implemented because
the content of the corresponding /sys directory does not use the same
conventions as regular devices regarding partitions.

Instead of relying on subdirectories such as /sys/block/name/name1, the
devicemapper uuid file is used and expected to start with part\d+. The
holders/slaves directories provide pointers between the whole device and
the partition devices.

Although these structural differences reduce the opportunity for
code factorization, it is easier for backward compatibility since the
multipath specific logic is limited to if is_mpath(dev) branches.

http://tracker.ceph.com/issues/11881 Refs: #11881

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:51 +02:00
Loic Dachary
2fca91eb2a ceph-disk: --verbose shows a stack trace on error
When running with --verbose, do not hide the stack trace from the user
when an exception is raised. It is most helpful to figure out when the
exception actually happened.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:51 +02:00
Loic Dachary
aac8971988 ceph-disk: replace partx with partprobe
Older distributions that required partx (CentOS 6 and the like) are no
longer supported and the partx fallback can be obsoleted.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:51 +02:00
Loic Dachary
0e34742b96 ceph-disk: is_mpath predicate for multipath devices
The is_mpath predicate returns True if a device is managed by
multipath. It is based on the devicemapper uuid content which is
expected to always contain the mpath- string to identify the multipath
subsystem.

The block_path helper is added to convert the path to a device to the
/sys directory that describes it. It uses the major and minor number
instead of the device name because it is more reliable. The rationale
including an actual example is added as a comment for future
maintainers.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:51 +02:00
Loic Dachary
f9cbd792f8 tests: ceph-disk tests may use system ceph-{mon,osd}
Allow ceph-disk.sh to run to test ceph as installed from packages.

When run from sources, ceph-disk.sh is expected to use the binaries from
the source tree. It is enough to prepend . to the PATH. There is no need
to prefix each binary with ./

The virtualenv is also only necessary when running from sources and
setting it up for ceph-detect-init is only done if in the source tree.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:37:51 +02:00
Loic Dachary
42ad86e14e udev: add devicemapper to partuuid-workaround
The dm-* devices are not excluded and will have by-partuuid symlinks
etc. This will include devices managed by multipath as well as
others. Since this only is used on partitions:

  # ignore partitions that span the entire disk
  TEST=="whole_disk", GOTO="persistent_storage_end_two"

It may create symlinks for dm-* devices that are unrelated to Ceph and
we assume this is going to be ok.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-08-29 02:36:56 +02:00
Sage Weil
bbe9f577d9 Merge remote-tracking branch 'gh/infernalis' 2015-08-28 15:20:04 -04:00
Sage Weil
cbaac86f37 Merge pull request #5690 from dzafman/wip-pgls-zafman
cls: Fix successful return found by compiler warning

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-28 13:19:23 -04:00
Sage Weil
8534ae6dd4 Merge pull request #5704 from tchaikov/wip-adventure-mode
common: 'enable experimental data corrupting features' now understand '*'

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-28 12:20:18 -04:00
Samuel Just
6d5d07267a Merge pull request #5667 from liewegas/wip-9221
ceph_test_rados_api_tier: make PromoteOn2ndRead tolerate thrashing

Reviewed-by: Samuel Just <sjust@redhat.com>
2015-08-28 09:18:16 -07:00
Samuel Just
d75824d9ef Merge pull request #5666 from liewegas/wip-12785
osd: fix off-by-one in hobject_t::is_temp()  (bug 12785)

Reviewed-by: Samuel Just <sjust@redhat.com>
2015-08-28 09:17:54 -07:00
Kefu Chai
a895982066 common: 'enable experimental data corrupting features' now understands '*'
'*' allows any feature.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2015-08-29 00:15:01 +08:00
Sage Weil
c2a9641c96 Merge pull request #5609 from rohanmars/wip-timegm
added boost timegm impl for cross platform support

In the future it would be nice to avoid duplication of the code in each compiled module, but this works for now.  The only real user right now is rgw.

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-28 12:14:41 -04:00
Sage Weil
4c00183996 Merge pull request #5627 from wonzhq/agent-work
osd: do evict before flush in agent_work

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-28 12:13:57 -04:00
Sage Weil
620c4177ea Merge pull request #5640 from liewegas/wip-mutex-lock
mutex: avoid trylock unless instrumentation is enabled

Reviewed-by: Samuel Just <sjust@redhat.com>
Reviewed-by: Piotr Dałek <piotr.dalek@ts.fujitsu.com>
2015-08-28 12:13:38 -04:00
Sage Weil
7942db555f Merge pull request #5656 from XinzeChi/wip-buffer-emtpyptr
common: fix insert empty ptr when bufferlist rebuild

Reviewed-by: Kefu Chai <kchai@redhat.com>
Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-28 12:12:45 -04:00
Kefu Chai
9c86b8e699 Merge pull request #5453 from wonzhq/recover-primary
osd: recovery fixes

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-28 23:45:25 +08:00
Kefu Chai
2b17da399b Merge pull request #5415 from wonzhq/do-recovery
osd: do_recovery cleanup

Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
2015-08-28 23:40:41 +08:00
Sage Weil
4a3454358a Merge pull request #5703 from ceph/wip-boost-random-cmake
CMake: update for boost_random
2015-08-28 11:14:31 -04:00
John Spray
a3fc6e8356 CMake: update for boost_random
This became a dependency in dbcaa544

Signed-off-by: John Spray <john.spray@redhat.com>
2015-08-28 15:34:12 +01:00
Loic Dachary
34411efad5 Merge pull request #5701 from guce/h3c_mail_organization_map
h3c mail organization map

Reviewed-by: Loic Dachary <ldachary@redhat.com>
2015-08-28 12:23:19 +02:00
guce
e92d2f38c5 h3c mail organization map
update .mailmap and .organizationmap for h3c organization

Signed-off-by: Ce Gu <guce@h3c.com>
2015-08-28 17:56:34 +08:00
Kefu Chai
52bc4886b7 Merge pull request #5114 from branch-predictor/bp-reduced-memzero
ObjectStore/FileJournal: reduce impact of memset()

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-28 10:08:56 +08:00
David Zafman
a9c1601e8a cls: Fix successful return found by compiler warning
Signed-off-by: David Zafman <dzafman@redhat.com>
2015-08-27 16:21:50 -07:00
David Zafman
0a7c4e390b Merge pull request #5688 from dzafman/wip-decode-zafman
osd: Decode use_gmt_hitset with a unique version

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-27 12:58:47 -07:00
Samuel Just
46e7f36785 Merge pull request #5679 from wonzhq/store-test
test: disable newstore test until it's merged

Reviewed-by: Samuel Just <sjust@redhat.com>
2015-08-27 11:59:49 -07:00
David Zafman
2bc5a48f4c osd: Decode use_gmt_hitset with a unique version
Signed-off-by: David Zafman <dzafman@redhat.com>
2015-08-27 11:25:00 -07:00
John Spray
60e58b010c Merge pull request #5545 from ceph/wip-objclass-filters
Allow object classes to define PGLS filters

Reviewed-by: David Zafman <dzafman@redhat.com>
2015-08-27 18:14:37 +01:00
Sage Weil
cbe101e7db Merge remote-tracking branch 'gh/wip-osd-compat'
Reviewed-by: Samuel Just <sjust@redhat.com>
2015-08-27 13:05:40 -04:00
Sage Weil
68d1d8ee38 Merge pull request #5683 from tchaikov/wip-hitset-gmt-yet-another-feature-bit
osd: do not let OSD_HITSET_GMT reuse the feature bit

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-27 12:41:54 -04:00
Kefu Chai
5a4f6a866b osd: do not let OSD_HITSET_GMT reuse the feature bit
* to ease the backport to hammer

Signed-off-by: Kefu Chai <kchai@redhat.com>
2015-08-28 00:39:12 +08:00
Joao Eduardo Luis
f1e1ada768 Merge pull request #5524 from tchaikov/wip-monstore-cache
mon: add a cache layer over MonitorDBStore

Reviewed-by: Joao Eduardo Luis <joao@suse.de>
Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-27 16:21:16 +01:00
Sage Weil
cba062e4a8 Merge pull request #5669 from yuyuyu101/wip-12745
ms/simple: Messenger/MessengerTest.SyntheticInjectTest2/1 hang

Reviewed-by: Sage Weil <sage@redhat.com>
2015-08-27 10:10:55 -04:00
Sage Weil
3eb36fc732 doc/release-notes: v0.94.3
Fix up the release timeline link for v9.0.3 too.

Signed-off-by: Sage Weil <sage@redhat.com>
2015-08-27 10:06:07 -04:00
John Spray
f5df1e4884 osd: separate filter init from construction
...so that implementations can readily handle
decode errors in client args and return an
error code.

Signed-off-by: John Spray <john.spray@redhat.com>
2015-08-27 14:13:46 +01:00
John Spray
2777438b36 test: add a test for filter in cls hello
Signed-off-by: John Spray <john.spray@redhat.com>
2015-08-27 14:13:46 +01:00