similar to https://github.com/ceph/ceph/pull/29538/ we unlock a shared_lock with
unlock causing a crash. Also scope the single line if statements to make the
code more concise
Sage Weil [Fri, 9 Aug 2019 15:40:45 +0000 (10:40 -0500)]
Merge PR #29292 into master
* refs/pull/29292/head:
os/bluestore: warn on no per-pool omap
os/bluestore: fsck: warning (not error) by default on no per-pool omap
os/bluestore: fsck: int64_t for error count
os/bluestore: default size of 1 TB for testing
os/bluestore: behave if we *do* set PGMETA and PERPOOL flags
os/bluestore: do not set both PGMETA_OMAP and PERPOOL_OMAP
os/bluestore: fsck: only generate 1 error per omap_head
os/bluestore: make fsck repair convert to per-pool omap
os/bluestore: teach fsck to tolerate per-pool omap
os/bluestore: ondisk format change to 3 for per-pool omap
mon/PGMap: add data/omap breakouts for 'df detail' view
osd/osd_types: separate get_{user,allocated}_bytes() into data and omap variants
mon/PGMap: fix stored_raw calculation
mon/PGMap: add in actual omap usage into per-pool stats
osd: report per-pool omap support via store_statfs_t
os/bluestore: set per_pool_omap key on mkfs
osd/osd_types: count per-pool omap capable OSDs
os/bluestore: report omap_allocated per-pool
os/bluestore: add pool prefix to omap keys
kv/KeyValueDB: take key_prefix for estimate_prefix_size()
os/bluestore: fix manual omap key manipulation to use Onode::get_omap_key()
os/bluestore: make omap key helpers Onode methods
os/bluestore: add Onode::get_omap_prefix() helper
os/bluestore: change _do_omap_clear() args
Sage Weil [Thu, 8 Aug 2019 20:52:45 +0000 (15:52 -0500)]
Merge PR #29493 into master
* refs/pull/29493/head:
qa/tasks/mgr/mgr_test_case: get mgrmap from 'mgr dump', not status
qa/tasks/ceph_manager: no newlines in 'ceph -s' output
mon: make mon summary more concise in 'ceph -s'
mon/MgrStatMonitor: set initial service_map 'modified' to cluster mkfs
mon: remove double-nesting of "osdmap" for ceph status
mon/MgrMap: make print_summary (used by 'ceph -s') more concise
Sage Weil [Thu, 8 Aug 2019 20:49:29 +0000 (15:49 -0500)]
Merge PR #29511 into master
* refs/pull/29511/head:
common/config: respect POD_MEMORY_REQUEST *and* POD_MEMORY_LIMIT env vars
common/config: let diff show non-build defaults
common/config: do no include multiple 'default' values
Reviewed-by: Mark Nelson <mnelson@redhat.com> Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Casey Bodley [Tue, 6 Aug 2019 15:09:03 +0000 (11:09 -0400)]
rgw: user rename calls update() to write final user
this calls remove_old_indexes() to clean up the uid and buckets index
objects, and also sets 'old_info = user_info' so that radosgw-admin
dumps the json output of the renamed user instead of the old user
Casey Bodley [Tue, 6 Aug 2019 14:32:15 +0000 (10:32 -0400)]
rgw: user rename operates on 'stub' user
user rename creates a 'stub' user and links all buckets to that before
modifying the existing user. once everything succeeds, the stub user is
updated to match the existing user and all index objects are updated to
point at it
Rafael Quintero [Wed, 31 Jul 2019 17:31:28 +0000 (13:31 -0400)]
mgr/dashboard: E2E Dashboard Page Test Suite
Fixes: https://tracker.ceph.com/issues/40549 Fixes: https://tracker.ceph.com/issues/40550 Fixes: https://tracker.ceph.com/issues/40561 Signed-off-by: Adam King <adking@redhat.com> Signed-off-by: Rafael Quintero <rquinter@redhat.com>
Kefu Chai [Wed, 7 Aug 2019 09:46:13 +0000 (17:46 +0800)]
admin/build-doc: use python3
to address https://github.com/sphinx-doc/sphinx/issues/3620, we need to
use sphinx with its fix at
https://github.com/sphinx-doc/sphinx/commit/e049f86b2de1cfdf8a74c88dc9593d047c85d5cb
in other words, we need to use sphinx v2.0.0 and up. but sphinx 2.0
requires python >= 3.5, so we have to use python3 for building the
documents.
in this change:
* doc-requirements.txt: install python3 packages on debian derivatives
* build-doc: install python3.6 packages from EPEL7, and use python3
venv for using sphinx2
* doc-requirements.txt: bump up all python packages to latest
stable.
Lenz Grimmer [Wed, 7 Aug 2019 09:14:08 +0000 (11:14 +0200)]
Merge pull request #29451 from rhcs-dashboard/wip-41047-master
github: Add CODEOWNERs for designated code-owner reviews
Reviewed-by: Jan Fajerski <jfajerski@suse.com> Reviewed-by: Kefu Chai <kchai@redhat.com> Reviewed-by: Sage Weil <sage@redhat.com> Reviewed-by: Sebastian Wagner <swagner@suse.com> Reviewed-by: Stephan Müller <smueller@suse.com>
* use primitive types instead of `JLeaf(the_type)` as they are
equivalent in this context
* remove fields which are added only if certain channels are
activated.
* allow unknown fields, as we are including various stuff
in the report, for instance, osdmap, usage, crash info, etc.
Sage Weil [Tue, 6 Aug 2019 21:22:14 +0000 (16:22 -0500)]
Merge PR #29116 into master
* refs/pull/29116/head:
osd: move heartbeat connection cleanup to helper
osd: break con<->session cycle when removing heartbeat peers
osd: mark down heartbeat connections on shutdown
crimson/: move get_mnow() to ShardServices, pass to heartbeat
crimson/osd: stubs for get_mnow, get_hbstamps
crimson/osd/heartbeat: adapt to new MOSDPing fields
crimson/osdmap_service: add get_mnow(), get_up_epoch()
osd/PeeringState: take HeartbeatStamps refs for current interval
osd: track clock delta between peer OSDs
osd: add get_mnow() interface to OSDService, PG, PeeringState
osd: record startup_time
osd: some minor refactoring/cleanup in handle_osd_ping
Sage Weil [Tue, 6 Aug 2019 16:12:43 +0000 (11:12 -0500)]
common/config: respect POD_MEMORY_REQUEST *and* POD_MEMORY_LIMIT env vars
If a kubernetes pod spec specifies a limit of X, then the pod gets both
the limits.memory and requests.memory resource fields set, and rook passes
those as POD_MEMORY_LIMIT and POD_MEMORY_REQUEST environment variables.
This is a problem if only the limit is set, because we will end up
setting our osd_memory_target (and, in the future, other *_memory_targets)
to the hard limit, and the daemon will inevitably reach that threshold
and get killed.
Fix this by also looking at the POD_MEMORY_LIMIT value, and applying the
ratio (default: .8) to it, and setting our actual target to the min of
that and the POD_MEMORY_REQUEST.
Also, set the "default" target to ratio*limit, so that it will apply in
general when no request is specified.
Jason Dillaman [Fri, 2 Aug 2019 15:57:29 +0000 (11:57 -0400)]
pybind/mgr/rbd_support: use image ids to detect duplicate tasks
This helps to to avoid the case where new tasks were not being scheduled
when an image name was re-used after having a task created under the
same name.
Fixes: https://tracker.ceph.com/issues/41032 Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Sage Weil [Thu, 25 Jul 2019 14:02:04 +0000 (09:02 -0500)]
os/bluestore: ondisk format change to 3 for per-pool omap
Move to ondisk format v3. This means that per-pool omap keys may exist,
but does not imply that *all* objects use the new form until the
per_pool_omap=1 super key is also set.
Sage Weil [Wed, 24 Jul 2019 14:43:59 +0000 (09:43 -0500)]
mon/PGMap: fix stored_raw calculation
The get_user_bytes() helper is a bit weird because it uses the
raw_used_rate (replication/EC factor) so that it can work *backwards*
from raw usage to normalized user usage. However, the legacy case that
works from PG stats does not use this factor... and the stored_raw value
(in the JSON output only) was incorrectly passing in a factor of 1.0,
which meant that for legacy mode it was a bogus value.
Fix by calculating stored_raw as stored_normalized * raw_used_rate.