]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
6 years agomgr/dashboard: Rename iSCSI gateways name to FQDN 28720/head
Ricardo Marques [Wed, 26 Jun 2019 10:04:25 +0000 (11:04 +0100)]
mgr/dashboard: Rename iSCSI gateways name to FQDN

iSCSI gateways name will be automatically renamed from host
shot name to FQDN.

Fixes: https://tracker.ceph.com/issues/40566
Signed-off-by: Ricardo Marques <rimarques@suse.com>
6 years agomgr/dashboard: Upgrade ceph-iscsi config to version 10
Ricardo Marques [Mon, 24 Jun 2019 14:09:24 +0000 (15:09 +0100)]
mgr/dashboard: Upgrade ceph-iscsi config to version 10

Fixes: https://tracker.ceph.com/issues/40566
Signed-off-by: Ricardo Marques <rimarques@suse.com>
6 years agoMerge pull request #28753 from tchaikov/wip-doc-conf
Kefu Chai [Thu, 4 Jul 2019 05:23:24 +0000 (13:23 +0800)]
Merge pull request #28753 from tchaikov/wip-doc-conf

doc/rados/configuration: update to be in sync with ConfUtils changes

Reviewed-by: Neha Ojha <nojha@redhat.com>
Reviewed-by: Brad Hubbard <bhubbard@redhat.com>
6 years agoMerge pull request #28803 from badone/wip-ceph_ansible_upgrade-ansible-2.8
Brad Hubbard [Thu, 4 Jul 2019 04:51:18 +0000 (14:51 +1000)]
Merge pull request #28803 from badone/wip-ceph_ansible_upgrade-ansible-2.8

qa/ceph-ansible: Move to ansible 2.8

Reviewed-by: Yuri Weinstein <yweinste@redhat.com>
6 years agoMerge pull request #28807 from badone/wip-ceph_ansible-cephfs_pools-pg_num-fix
Brad Hubbard [Thu, 4 Jul 2019 04:50:12 +0000 (14:50 +1000)]
Merge pull request #28807 from badone/wip-ceph_ansible-cephfs_pools-pg_num-fix

qa/ceph-ansible: Replace pgs with pg_num

Reviewed-by: Yuri Weinstein <yweinste@redhat.com>
6 years agoMerge PR #28867 into master
Sage Weil [Thu, 4 Jul 2019 02:27:20 +0000 (21:27 -0500)]
Merge PR #28867 into master

* refs/pull/28867/head:
qa/standalone/ceph-helpers: more osd debug

Reviewed-by: David Zafman <dzafman@redhat.com>
6 years agoMerge PR #28865 into master
Sage Weil [Thu, 4 Jul 2019 02:26:57 +0000 (21:26 -0500)]
Merge PR #28865 into master

* refs/pull/28865/head:
mon/OSDMonitor: fix _lookup_snap to verify the pool matches
ceph_test_rados_api_*: make failing to clean up namespace non-fatal
osd: store purged_snaps history under separate object

Reviewed-by: Samuel Just <sjust@redhat.com>
6 years agoMerge PR #28864 into master
Sage Weil [Wed, 3 Jul 2019 23:33:06 +0000 (18:33 -0500)]
Merge PR #28864 into master

* refs/pull/28864/head:
doc/releases/releases.yaml: set target EOL to Jun 1 for L and M
doc/releases: update schedule to describe a 12-month cycle

Reviewed-by: Noah Watkins <nwatkins@redhat.com>
6 years agoMerge pull request #28334 from dzafman/wip-40073
David Zafman [Wed, 3 Jul 2019 22:27:27 +0000 (15:27 -0700)]
Merge pull request #28334 from dzafman/wip-40073

osd: Fix the way that auto repair triggers after regular scrub

Reviewed-by: Neha Ojha <nojha@redhat.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
6 years agoqa/standalone/ceph-helpers: more osd debug 28867/head
Sage Weil [Wed, 3 Jul 2019 21:53:00 +0000 (16:53 -0500)]
qa/standalone/ceph-helpers: more osd debug

debug_ms=1
debug_monc=20

Hunting down http://tracker.ceph.com/issues/40666

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: fix _lookup_snap to verify the pool matches 28865/head
Sage Weil [Wed, 3 Jul 2019 20:52:55 +0000 (15:52 -0500)]
mon/OSDMonitor: fix _lookup_snap to verify the pool matches

We don't want to get false positives from keys for other pools.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoMerge pull request #28866 from alfredodeza/wip-rm40665
Andrew Schoen [Wed, 3 Jul 2019 20:16:23 +0000 (15:16 -0500)]
Merge pull request #28866 from alfredodeza/wip-rm40665

ceph-volume broken assertion errors after pytest changes

Reviewed-by: Andrew Schoen <aschoen@redhat.com>
6 years agoceph-volume api.lvm catch IndexError when parsing dmmapper output 28866/head
Alfredo Deza [Wed, 3 Jul 2019 18:59:18 +0000 (14:59 -0400)]
ceph-volume api.lvm catch IndexError when parsing dmmapper output

Signed-off-by: Alfredo Deza <adeza@redhat.com>
6 years agoceph-volume tests update to use error.value instead of str(error)
Alfredo Deza [Wed, 3 Jul 2019 18:58:31 +0000 (14:58 -0400)]
ceph-volume tests update to use error.value instead of str(error)

Signed-off-by: Alfredo Deza <adeza@redhat.com>
6 years agoceph_test_rados_api_*: make failing to clean up namespace non-fatal
Sage Weil [Wed, 3 Jul 2019 18:30:55 +0000 (13:30 -0500)]
ceph_test_rados_api_*: make failing to clean up namespace non-fatal

If we leak snaps, failing to clean up a namespace can happen and won't
get fixed until we scrub purged_snaps.  Make this a non-fatal condition.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: store purged_snaps history under separate object
Sage Weil [Wed, 3 Jul 2019 18:29:15 +0000 (13:29 -0500)]
osd: store purged_snaps history under separate object

We can't put this in the snapmapper object because filestore does not
allow multiple concurrent omap iterators on the same object.  (This is a
limitation that could be fixed with some read/write locking, but not
without some significant changes to DBObjectMap; since that is old crufty
legacy code let's avoid touching it!)

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoMerge pull request #28788 from hjwsm1989/cleanup-debian
Kefu Chai [Wed, 3 Jul 2019 16:33:14 +0000 (00:33 +0800)]
Merge pull request #28788 from hjwsm1989/cleanup-debian

debian: remove dup ceph-fuse line

Reviewed-by: Kefu Chai <kchai@redhat.com>
6 years agodoc/releases/releases.yaml: set target EOL to Jun 1 for L and M 28864/head
Sage Weil [Wed, 3 Jul 2019 15:55:03 +0000 (10:55 -0500)]
doc/releases/releases.yaml: set target EOL to Jun 1 for L and M

Don't list an actual Luminous EOL yet.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agodoc/releases: update schedule to describe a 12-month cycle
Sage Weil [Wed, 3 Jul 2019 15:54:39 +0000 (10:54 -0500)]
doc/releases: update schedule to describe a 12-month cycle

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoMerge PR #28785 into master
Sage Weil [Wed, 3 Jul 2019 13:30:51 +0000 (08:30 -0500)]
Merge PR #28785 into master

* refs/pull/28785/head:
osd/PrimaryLogPG: do_op - do not create head object twice

Reviewed-by: Kefu Chai <kchai@redhat.com>
6 years agoMerge PR #28782 into master
Sage Weil [Wed, 3 Jul 2019 13:24:29 +0000 (08:24 -0500)]
Merge PR #28782 into master

* refs/pull/28782/head:
common/options.cc: Lower the default value of osd_deep_scrub_large_omap_object_key_threshold

Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Sage Weil <sage@redhat.com>
6 years agoMerge PR #28821 into master
Sage Weil [Wed, 3 Jul 2019 13:24:02 +0000 (08:24 -0500)]
Merge PR #28821 into master

* refs/pull/28821/head:
os/bluestore/bluefs_types: consolidate contiguous extents

Reviewed-by: xie xingguo <xie.xingguo@zte.com.cn>
Reviewed-by: Igor Fedotov <ifedotov@suse.com>
6 years agoMerge PR #28330 into master
Sage Weil [Wed, 3 Jul 2019 13:22:34 +0000 (08:22 -0500)]
Merge PR #28330 into master

* refs/pull/28330/head:
osd: drop osd_lock during scrub
ceph_test_rados_api_tier_pp: tolerate ENOENT or success from deleted snap
osd: automatically scrub purged_snaps every deep scrub interval
osd: move scrub_purged_snaps to helper
osd/OSDMap: SERVER_OCTOPUS feature bit is now significant
ceph_test_rados_api_snapshots_pp: drop unnecessary assert
mon/OSDMonitor: record last_purged_snaps_scrub from beacon to osdmap
osd: report last_purged_snaps_scrub as part of beacon
osd: log purged_snaps scrub to cluster log
osd: record last_purged_snaps_scrub in superblock
osd/OSDMap: add last_purged_snaps_stamp to osd_xinfo_t
mon/OSDMonitor: fix bug in try_prune_purged_snaps
mon/OSDMonitor: record snap removal seq as purged
mon/OSDMonitor: do not bother reporting gaps in removed_snaps
osdc/Objecter: don't worry about gap_removed_snaps from map gaps
mds/SnapServer: make not about pre-octopus compat code
osd: implement scrub_purged_snaps command
osd/PrimaryLogPG: always remove the snap we are trimming
ceph_test_rados_api_snapshots_pp: (partial) test to reproduce stray clones
osd: sync old purged_snaps on startup after upgrade or osd creation
osd: record purged_snaps when we store new maps
mon/OSDMonitor: add messages to get past purged_snaps
mon/OSDMonitor: record pre-octopus purged snaps with first octopus map
mon/OSDMonitor: record purged_snaps for each epoch
mon/OSDMonitor: make_snap_epoch_key -> make_removed_snap_epoch_key
osd/osd_types: add purged_snaps_last to OSDSuperblock
osd/osd_types: clean up initial values for OSDSuperblock
mon/OSDMonitor: make {removed,purged}_snap storage more efficient
mon/OSDMonitor: move (removed, purged) snap update into a helper
mon/OSDMonitor: generalize/refactor lookup_*_snap
mon/OSDMonitor: refactor snap key and value helpers
mon/OSDMonitor: make_snap_key -> make_removed_snap_key, make_purged_snap_key
mon/OSDMonitor: fix lookup_purged_snap implementation
mon/OSDMonitor: lookup_pruned_snap -> lookup_purged_snap
osd: adjust snapmapper keys on first start as octopus
osd/SnapMapper: include poolid in snap index
mon/OSDMonitor: document osd snap metadata format
osd/SnapMapper: document stored keys and values
mon/OSDMonitor: use structured binding for prepare_remove_snaps
mon/OSDMonitor: send MRemoveSnaps back to octopus MDS
mds/SnapServer: handle MRemoveSnaps acks from mon
CMakeLists: include 'cephfs' (which includes libcephfs) in 'vstart' target
mon/PaxosService: add C_ReplyOp
vnewosd.sh: add script to add a new osd to an existing vstart
vstart.sh: remove useless auth add for osds
vstart.sh: wait for mgr volume module to start up
mon/OSDMonitor: make snap removal handle dups safely
mon/OSDMonitor: only update removed_snaps when pre-octopus
ceph_test_rados: stop doing long object names
ceph_test_rados_api_tier_pp: fix osd version checks
osd/PrimaryLogPG: use get_ssc_as_of for snapc for flushing clones
osd/PrimaryLogPG: only maintain SnapSet::snaps for pre-octopus compat
mon/OSDMonitor: only maintain pg_pool_t::removed_snaps for pre-octopus
osd/osd_types: mark SnapSet::snaps as legacy
osd/osd_types: SnapSet::get_ssc_as_of: use clone_snaps
osd/PrimaryLogPG: change fabrication of promoted clone snaps
osd/PrimaryLogPG: only filter SnapSet::snaps for flush for pre-octopus compat
osd/PrimaryLogPG: trim_objects: only filter SnapSet::snaps for pre-octopus
osd/PrimaryLogPG: make best effort to sanitize clones on copy-from
mds/SnapServer: int -> int32_t for encoded type
messages/MRemoveSnaps: int -> int32_t on encoded type
osd/PrimaryLogPG: find_object_context: trust SnapSet's clone_snaps
osd/PrimaryLogPG: use osdmap removed_snaps_queue for snap trimming
mon/OSDMonitor: avoid is_removed_snap()
osd/PeeringState: drop some mimic conditionals
osd/PG: drop pre-mimic snap_trimq code
osd/PeeringState: removed pre-mimic removed snap tracking
osd: move snap_interval_set_t to osd_types
mon: drop mon_debug_no_require_mimic
mon/OSDMonitor: remove pre-mimic snap behavior support
mon/OSDMonitor: remove support for pre-mimic conversion
osd/osd_types: remove build_removed_snaps(), maybe_update_removed_snaps()
osd: remove luminous compat code for removed_snaps

Reviewed-by: Samuel Just <sjust@redhat.com>
Reviewed-by: Neha Ojha <nojha@redhat.com>
6 years agomgr/dashboard: RGW rest client instances cache eviction (#28480)
Volker Theile [Wed, 3 Jul 2019 09:45:29 +0000 (11:45 +0200)]
mgr/dashboard: RGW rest client instances cache eviction (#28480)

mgr/dashboard: RGW rest client instances cache eviction

Reviewed-by: Patrick Nawracay <pnawracay@suse.com>
Reviewed-by: Volker Theile <vtheile@suse.com>
6 years agoMerge pull request #28265 from ricardoasmarques/wip-iscsi-logged-in
Lenz Grimmer [Wed, 3 Jul 2019 09:34:37 +0000 (11:34 +0200)]
Merge pull request #28265 from ricardoasmarques/wip-iscsi-logged-in

mgr/dashboard: Display iSCSI "logged in" info

Reviewed-by: Tiago Melo <tmelo@suse.com>
6 years agomgr/dashboard: Pool list shows current r/w byte usage in graph (#28153)
Lenz Grimmer [Wed, 3 Jul 2019 09:26:30 +0000 (11:26 +0200)]
mgr/dashboard: Pool list shows current r/w byte usage in graph (#28153)

mgr/dashboard: Pool list shows current r/w byte usage in graph

Reviewed-by: Alfonso Martínez <almartin@redhat.com>
Reviewed-by: Ricardo Marques <rimarques@suse.com>
Reviewed-by: Volker Theile <vtheile@suse.com>
6 years agomgr/dashboard: Allow viewing and setting pool quotas (#27945)
Lenz Grimmer [Wed, 3 Jul 2019 09:20:25 +0000 (11:20 +0200)]
mgr/dashboard: Allow viewing and setting pool quotas (#27945)

mgr/dashboard: Allow viewing and setting pool quotas

Reviewed-by: Laura Paduano <lpaduano@suse.com>
Reviewed-by: Ricardo Marques <rimarques@suse.com>
Reviewed-by: Tiago Melo <tmelo@suse.com>
6 years agomgr/dashboard: fix MDS charts are stacked in Filesystems page (#28341)
Lenz Grimmer [Wed, 3 Jul 2019 09:17:50 +0000 (11:17 +0200)]
mgr/dashboard: fix MDS charts are stacked in Filesystems page (#28341)

mgr/dashboard: fix MDS charts are stacked in Filesystems page

Reviewed-by: Ricardo Marques <rimarques@suse.com>
6 years agomgr/dashboard: Interlock `fast-diff` and `object-map` RBD imag… (#28076)
Lenz Grimmer [Wed, 3 Jul 2019 09:13:20 +0000 (11:13 +0200)]
mgr/dashboard: Interlock `fast-diff` and `object-map` RBD imag… (#28076)

mgr/dashboard: Interlock `fast-diff` and `object-map` RBD image features

Reviewed-by: Ricardo Marques <rimarques@suse.com>
Reviewed-by: Stephan Müller <smueller@suse.com>
Reviewed-by: Tiago Melo <tmelo@suse.com>
6 years agoMerge pull request #27997 from LenzGr/master-documentation
Ricardo Marques [Wed, 3 Jul 2019 08:23:52 +0000 (09:23 +0100)]
Merge pull request #27997 from LenzGr/master-documentation

doc: Added dashboard features, improved wording

Reviewed-by: Nathan Cutler <ncutler@suse.com>
Reviewed-by: Patrick Nawracay <pnawracay@suse.com>
Reviewed-by: Tatjana Dehler <tdehler@suse.com>
Reviewed-by: Volker Theile <vtheile@suse.com>
Reviewed-by: Yuri Weinstein <yweinste@redhat.com>
6 years agomgr/dashboard: fix HACKING.rst rendering (#28841)
Volker Theile [Wed, 3 Jul 2019 08:10:40 +0000 (10:10 +0200)]
mgr/dashboard: fix HACKING.rst rendering (#28841)

mgr/dashboard: fix HACKING.rst rendering

Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
Reviewed-by: Ricardo Marques <rimarques@suse.com>
Reviewed-by: Volker Theile <vtheile@suse.com>
6 years agoMerge pull request #28542 from cyx1231st/wip-seastar-msgr-perf
Kefu Chai [Wed, 3 Jul 2019 07:41:44 +0000 (15:41 +0800)]
Merge pull request #28542 from cyx1231st/wip-seastar-msgr-perf

test/crimson: improved perf_crimson_msgr with timer and sampled lat

Reviewed-by: Kefu Chai <kchai@redhat.com>
6 years agoMerge pull request #28836 from alfredodeza/wip-toxsleep
Andrew Schoen [Tue, 2 Jul 2019 18:51:56 +0000 (13:51 -0500)]
Merge pull request #28836 from alfredodeza/wip-toxsleep

ceph-volume tests add a sleep in tox for slow OSDs after booting

Reviewed-by: Andrew Schoen <aschoen@redhat.com>
6 years agoosd: drop osd_lock during scrub 28330/head
Sage Weil [Tue, 2 Jul 2019 15:51:57 +0000 (10:51 -0500)]
osd: drop osd_lock during scrub

We do not want to hold osd_lock while calling apply_transaction or else
we may cause a deadlock due to a completion event that needs osd_lock.

Also, we don't need to hold the lock here, so don't.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomgr/dashboard: Add backwards compatibility to interlock of `fast-diff` and `object... 28076/head
Patrick Nawracay [Tue, 18 Jun 2019 12:00:15 +0000 (14:00 +0200)]
mgr/dashboard: Add backwards compatibility to interlock of `fast-diff` and `object-map`

Fixes: http://tracker.ceph.com/issues/39451
Signed-off-by: Patrick Nawracay <pnawracay@suse.com>
6 years agomgr/dashboard: Interlock `fast-diff` and `object-map`
Patrick Nawracay [Tue, 18 Jun 2019 11:57:46 +0000 (13:57 +0200)]
mgr/dashboard: Interlock `fast-diff` and `object-map`

Fixes: http://tracker.ceph.com/issues/39451
Signed-off-by: Patrick Nawracay <pnawracay@suse.com>
6 years agomgr/dashboard: fix document rendering 28841/head
Tatjana Dehler [Tue, 2 Jul 2019 14:48:18 +0000 (16:48 +0200)]
mgr/dashboard: fix document rendering

Fixes: https://tracker.ceph.com/issues/40523
Signed-off-by: Tatjana Dehler <tdehler@suse.com>
6 years agoceph_test_rados_api_tier_pp: tolerate ENOENT or success from deleted snap
Sage Weil [Sun, 30 Jun 2019 20:06:37 +0000 (15:06 -0500)]
ceph_test_rados_api_tier_pp: tolerate ENOENT or success from deleted snap

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: automatically scrub purged_snaps every deep scrub interval
Sage Weil [Wed, 26 Jun 2019 20:43:25 +0000 (15:43 -0500)]
osd: automatically scrub purged_snaps every deep scrub interval

With randomization.

We do this from tick() for simplicity.  It is a rare event, will take 10s
of seconds at most, and nothing else particularly time-sensitive is
happening from tick().

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: move scrub_purged_snaps to helper
Sage Weil [Wed, 26 Jun 2019 20:21:36 +0000 (15:21 -0500)]
osd: move scrub_purged_snaps to helper

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/OSDMap: SERVER_OCTOPUS feature bit is now significant
Sage Weil [Tue, 18 Jun 2019 17:59:29 +0000 (12:59 -0500)]
osd/OSDMap: SERVER_OCTOPUS feature bit is now significant

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoceph_test_rados_api_snapshots_pp: drop unnecessary assert
Sage Weil [Wed, 26 Jun 2019 20:06:14 +0000 (15:06 -0500)]
ceph_test_rados_api_snapshots_pp: drop unnecessary assert

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: record last_purged_snaps_scrub from beacon to osdmap
Sage Weil [Wed, 26 Jun 2019 19:30:07 +0000 (14:30 -0500)]
mon/OSDMonitor: record last_purged_snaps_scrub from beacon to osdmap

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: report last_purged_snaps_scrub as part of beacon
Sage Weil [Wed, 26 Jun 2019 19:29:55 +0000 (14:29 -0500)]
osd: report last_purged_snaps_scrub as part of beacon

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: log purged_snaps scrub to cluster log
Sage Weil [Wed, 26 Jun 2019 19:29:41 +0000 (14:29 -0500)]
osd: log purged_snaps scrub to cluster log

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: record last_purged_snaps_scrub in superblock
Sage Weil [Wed, 26 Jun 2019 19:29:25 +0000 (14:29 -0500)]
osd: record last_purged_snaps_scrub in superblock

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/OSDMap: add last_purged_snaps_stamp to osd_xinfo_t
Sage Weil [Wed, 26 Jun 2019 17:51:54 +0000 (12:51 -0500)]
osd/OSDMap: add last_purged_snaps_stamp to osd_xinfo_t

Record OSDs' last scrub of purged_snaps in the OSDMap.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: fix bug in try_prune_purged_snaps
Sage Weil [Fri, 21 Jun 2019 02:54:09 +0000 (21:54 -0500)]
mon/OSDMonitor: fix bug in try_prune_purged_snaps

If 'begin' isn't found, we'll get a [pbegin,pend) range back that was
nearby.  Only if it overlaps the [begin,end) range do we want to shorten
our range to [begin,pbegin); the old assert was making the assumption
that the lookup would only return a range that was after 'begin', but in
reality it can return was that comes before it too.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: record snap removal seq as purged
Sage Weil [Thu, 20 Jun 2019 17:07:38 +0000 (12:07 -0500)]
mon/OSDMonitor: record snap removal seq as purged

When we delete a selfmanaged snap we have to bump seq.  Record this as
purged so that we avoid discontinuities in the history and so our storage
is a bit more efficient.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: do not bother reporting gaps in removed_snaps
Sage Weil [Wed, 12 Jun 2019 21:47:53 +0000 (16:47 -0500)]
mon/OSDMonitor: do not bother reporting gaps in removed_snaps

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosdc/Objecter: don't worry about gap_removed_snaps from map gaps
Sage Weil [Wed, 12 Jun 2019 21:47:29 +0000 (16:47 -0500)]
osdc/Objecter: don't worry about gap_removed_snaps from map gaps

This was an attempt to ensure that we didn't let removed_snaps slip by
when we had a discontiguous stream of OSDMaps.  In octopus, this can still
happen, but it's mostly harmless--the OSDs will periodically scrub to
clean up any resulting stray clones.  It's not worth the complexity.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomds/SnapServer: make not about pre-octopus compat code
Sage Weil [Tue, 11 Jun 2019 14:32:34 +0000 (09:32 -0500)]
mds/SnapServer: make not about pre-octopus compat code

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: implement scrub_purged_snaps command
Sage Weil [Mon, 10 Jun 2019 22:31:54 +0000 (17:31 -0500)]
osd: implement scrub_purged_snaps command

This a naive one-shot implementation that does the full scan synchronously
in the command thread.  It shouldn't block any IO except to the extent
that it will compete for IO reading the underlying snapmapper omap object.

When we discover mapped objects that are covered by ranges of snaps that
should be purged, we requeue the snapid for trim on the relevant PG(s).
For these 'repeat' trims we skip the final step(s) to mark the snapid as
purged, since that presumably already happened some time ago.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: always remove the snap we are trimming
Sage Weil [Mon, 10 Jun 2019 22:31:08 +0000 (17:31 -0500)]
osd/PrimaryLogPG: always remove the snap we are trimming

This doesn't change behavior (yet), since we only trim snaps that are
marked for removal in the OSDMap.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoceph_test_rados_api_snapshots_pp: (partial) test to reproduce stray clones
Sage Weil [Mon, 10 Jun 2019 22:25:45 +0000 (17:25 -0500)]
ceph_test_rados_api_snapshots_pp: (partial) test to reproduce stray clones

The test creates a snap, removes it, waits for it to (hopefully) purge,
and then uses that snapid in a snapc to generate a clone.

This isn't a complete test because (1) it doesn't wait for the purge to
happen (e.g., by watching the osdmaps go by), and (2) it doesn't trigger
an osd scrub_purged_snaps afterwards.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: sync old purged_snaps on startup after upgrade or osd creation
Sage Weil [Mon, 10 Jun 2019 15:13:49 +0000 (10:13 -0500)]
osd: sync old purged_snaps on startup after upgrade or osd creation

This path only triggers after an upgrade or osd creation, when
purged_snaps_last < current_epoch.  When that happens, we slurp down the
old purged snaps so that we have a full history recorded locally.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: record purged_snaps when we store new maps
Sage Weil [Mon, 10 Jun 2019 15:12:04 +0000 (10:12 -0500)]
osd: record purged_snaps when we store new maps

When we get a new map, record the (new) purged_snaps.

Only do this if the OSD has purged_snaps that are in sync with the latest
OSDMap.  That means that after an upgrade, if the OSD didn't sync the
old purged_snaps on startup, it won't sync anything until it *next* starts
up.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: add messages to get past purged_snaps
Sage Weil [Mon, 10 Jun 2019 15:10:34 +0000 (10:10 -0500)]
mon/OSDMonitor: add messages to get past purged_snaps

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: record pre-octopus purged snaps with first octopus map
Sage Weil [Fri, 7 Jun 2019 21:08:27 +0000 (16:08 -0500)]
mon/OSDMonitor: record pre-octopus purged snaps with first octopus map

When we public our first require_osd_release >= octopus osdmap, record
all prior purged snaps in a key linked to the previous osdmap.  We assume
this will encode and fit into a single key and transaction because the
even larger set of removed_snaps is already a member of pg_pool_t, which
is included in every osdmap.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: record purged_snaps for each epoch
Sage Weil [Fri, 7 Jun 2019 20:03:28 +0000 (15:03 -0500)]
mon/OSDMonitor: record purged_snaps for each epoch

Only do this if the mons are all running octopus (and thus there is also
a record for all the pre-octopus purged snaps).

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: make_snap_epoch_key -> make_removed_snap_epoch_key
Sage Weil [Fri, 7 Jun 2019 19:51:01 +0000 (14:51 -0500)]
mon/OSDMonitor: make_snap_epoch_key -> make_removed_snap_epoch_key

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/osd_types: add purged_snaps_last to OSDSuperblock
Sage Weil [Fri, 7 Jun 2019 18:48:49 +0000 (13:48 -0500)]
osd/osd_types: add purged_snaps_last to OSDSuperblock

Make this 0 for old encodings or new superblocks.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/osd_types: clean up initial values for OSDSuperblock
Sage Weil [Fri, 7 Jun 2019 18:48:34 +0000 (13:48 -0500)]
osd/osd_types: clean up initial values for OSDSuperblock

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: make {removed,purged}_snap storage more efficient
Sage Weil [Fri, 7 Jun 2019 15:57:53 +0000 (10:57 -0500)]
mon/OSDMonitor: make {removed,purged}_snap storage more efficient

Merge adjacent extents to keep the database smaller and lookups more
efficient.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: move (removed, purged) snap update into a helper
Sage Weil [Fri, 7 Jun 2019 15:57:04 +0000 (10:57 -0500)]
mon/OSDMonitor: move (removed, purged) snap update into a helper

This is trivial at the moment, but we'll make it clever next.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: generalize/refactor lookup_*_snap
Sage Weil [Fri, 7 Jun 2019 15:51:52 +0000 (10:51 -0500)]
mon/OSDMonitor: generalize/refactor lookup_*_snap

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: refactor snap key and value helpers
Sage Weil [Fri, 7 Jun 2019 15:48:24 +0000 (10:48 -0500)]
mon/OSDMonitor: refactor snap key and value helpers

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: make_snap_key -> make_removed_snap_key, make_purged_snap_key
Sage Weil [Fri, 7 Jun 2019 15:42:56 +0000 (10:42 -0500)]
mon/OSDMonitor: make_snap_key -> make_removed_snap_key, make_purged_snap_key

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: fix lookup_purged_snap implementation
Sage Weil [Fri, 7 Jun 2019 15:23:18 +0000 (10:23 -0500)]
mon/OSDMonitor: fix lookup_purged_snap implementation

- look at purged, not removed snap keys
- fix the key check to look at the *key name* prefix, not the overall
  prefix (the one implemented by the KeyValueDB interface).

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: lookup_pruned_snap -> lookup_purged_snap
Sage Weil [Fri, 7 Jun 2019 15:21:16 +0000 (10:21 -0500)]
mon/OSDMonitor: lookup_pruned_snap -> lookup_purged_snap

This confused me and sent me into the weeds.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd: adjust snapmapper keys on first start as octopus
Sage Weil [Thu, 6 Jun 2019 19:37:07 +0000 (14:37 -0500)]
osd: adjust snapmapper keys on first start as octopus

Convert snapmapper keys to the new form the first time we start up running
octopus.

This is an incompat feature--once you start as octopus you can't go back.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/SnapMapper: include poolid in snap index
Sage Weil [Wed, 5 Jun 2019 21:53:25 +0000 (16:53 -0500)]
osd/SnapMapper: include poolid in snap index

We want to sort starting with (pool, snapid, ...) so that we align with
the structure of the purged_snaps.  Simply flattening all snaps across
pools is less than ideal because the purge records are intervals (with the
snap in the key the last snap for the interval); flattening means we'd have
to look at many records (across pools) to conclude anything.  Putting
these in the form we really want them simplifies things going forward.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: document osd snap metadata format
Sage Weil [Wed, 5 Jun 2019 21:50:53 +0000 (16:50 -0500)]
mon/OSDMonitor: document osd snap metadata format

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/SnapMapper: document stored keys and values
Sage Weil [Tue, 4 Jun 2019 19:23:16 +0000 (14:23 -0500)]
osd/SnapMapper: document stored keys and values

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: use structured binding for prepare_remove_snaps
Sage Weil [Fri, 31 May 2019 21:34:02 +0000 (16:34 -0500)]
mon/OSDMonitor: use structured binding for prepare_remove_snaps

No functional change

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: send MRemoveSnaps back to octopus MDS
Sage Weil [Fri, 31 May 2019 21:33:22 +0000 (16:33 -0500)]
mon/OSDMonitor: send MRemoveSnaps back to octopus MDS

The octopus MDS wants an explicit ack when snaps are removed.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomds/SnapServer: handle MRemoveSnaps acks from mon
Sage Weil [Fri, 31 May 2019 21:32:44 +0000 (16:32 -0500)]
mds/SnapServer: handle MRemoveSnaps acks from mon

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoCMakeLists: include 'cephfs' (which includes libcephfs) in 'vstart' target
Sage Weil [Fri, 31 May 2019 18:04:56 +0000 (13:04 -0500)]
CMakeLists: include 'cephfs' (which includes libcephfs) in 'vstart' target

This ensures 'make vstart' will build libcephfs, which lets the mgr volumes
module start, such that we can successfully vstart.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/PaxosService: add C_ReplyOp
Sage Weil [Fri, 31 May 2019 14:37:35 +0000 (09:37 -0500)]
mon/PaxosService: add C_ReplyOp

Generic helper context to reply to an op on (successful) finish.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agovnewosd.sh: add script to add a new osd to an existing vstart
Sage Weil [Mon, 10 Jun 2019 15:09:58 +0000 (10:09 -0500)]
vnewosd.sh: add script to add a new osd to an existing vstart

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agovstart.sh: remove useless auth add for osds
Sage Weil [Mon, 10 Jun 2019 15:09:46 +0000 (10:09 -0500)]
vstart.sh: remove useless auth add for osds

'osd new' installs the key.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agovstart.sh: wait for mgr volume module to start up
Sage Weil [Fri, 31 May 2019 18:04:32 +0000 (13:04 -0500)]
vstart.sh: wait for mgr volume module to start up

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: make snap removal handle dups safely
Sage Weil [Mon, 17 Jun 2019 23:11:50 +0000 (18:11 -0500)]
mon/OSDMonitor: make snap removal handle dups safely

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: only update removed_snaps when pre-octopus
Sage Weil [Mon, 17 Jun 2019 14:53:02 +0000 (09:53 -0500)]
mon/OSDMonitor: only update removed_snaps when pre-octopus

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoceph_test_rados: stop doing long object names
Sage Weil [Fri, 14 Jun 2019 16:22:54 +0000 (11:22 -0500)]
ceph_test_rados: stop doing long object names

This was there to test filestore's long file name handling, which (1)
works, and (2) we don't care that much about anymore.  Meanwhile, the
long names make the OSD log files *really* painful to read.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoceph_test_rados_api_tier_pp: fix osd version checks
Sage Weil [Wed, 12 Jun 2019 16:07:48 +0000 (11:07 -0500)]
ceph_test_rados_api_tier_pp: fix osd version checks

These need to exclude old releases but run the test for newer, unnamed
releases.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: use get_ssc_as_of for snapc for flushing clones
Sage Weil [Wed, 12 Jun 2019 15:37:51 +0000 (10:37 -0500)]
osd/PrimaryLogPG: use get_ssc_as_of for snapc for flushing clones

We will stop maintaining SnapSet::snaps shortly.  Instead, generate this
snapc using the existing SnapSet::get_ssc_as_of() method, which will now
derive the snap list from the clone_snaps member.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: only maintain SnapSet::snaps for pre-octopus compat
Sage Weil [Tue, 11 Jun 2019 21:38:12 +0000 (16:38 -0500)]
osd/PrimaryLogPG: only maintain SnapSet::snaps for pre-octopus compat

Once we have all octopus or newer OSDs, we can stop maintaining
SnapSet::snaps.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: only maintain pg_pool_t::removed_snaps for pre-octopus
Sage Weil [Tue, 11 Jun 2019 22:45:17 +0000 (17:45 -0500)]
mon/OSDMonitor: only maintain pg_pool_t::removed_snaps for pre-octopus

- do not examine removed_snaps
- do not add new items to removed_snaps unless we need pre-octopus compat
- clear removed_snaps in first octopus epoch

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/osd_types: mark SnapSet::snaps as legacy
Sage Weil [Tue, 11 Jun 2019 21:41:45 +0000 (16:41 -0500)]
osd/osd_types: mark SnapSet::snaps as legacy

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/osd_types: SnapSet::get_ssc_as_of: use clone_snaps
Sage Weil [Tue, 11 Jun 2019 21:39:51 +0000 (16:39 -0500)]
osd/osd_types: SnapSet::get_ssc_as_of: use clone_snaps

Fabricate a SnapContext from the clone_snaps instead of snaps (which we
are trying to kill).

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: change fabrication of promoted clone snaps
Sage Weil [Tue, 11 Jun 2019 21:33:19 +0000 (16:33 -0500)]
osd/PrimaryLogPG: change fabrication of promoted clone snaps

Instead of using SnapSet::snaps (which we are trying to kill), use the
clone_snaps[] snaps.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: only filter SnapSet::snaps for flush for pre-octopus compat
Sage Weil [Tue, 11 Jun 2019 18:54:45 +0000 (13:54 -0500)]
osd/PrimaryLogPG: only filter SnapSet::snaps for flush for pre-octopus compat

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: trim_objects: only filter SnapSet::snaps for pre-octopus
Sage Weil [Tue, 11 Jun 2019 18:52:32 +0000 (13:52 -0500)]
osd/PrimaryLogPG: trim_objects: only filter SnapSet::snaps for pre-octopus

For octopus and later, we don't need SnapSet::snaps.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: make best effort to sanitize clones on copy-from
Sage Weil [Tue, 11 Jun 2019 14:33:51 +0000 (09:33 -0500)]
osd/PrimaryLogPG: make best effort to sanitize clones on copy-from

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomds/SnapServer: int -> int32_t for encoded type
Sage Weil [Fri, 31 May 2019 14:09:09 +0000 (09:09 -0500)]
mds/SnapServer: int -> int32_t for encoded type

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomessages/MRemoveSnaps: int -> int32_t on encoded type
Sage Weil [Fri, 31 May 2019 13:56:37 +0000 (08:56 -0500)]
messages/MRemoveSnaps: int -> int32_t on encoded type

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: find_object_context: trust SnapSet's clone_snaps
Sage Weil [Thu, 30 May 2019 17:17:50 +0000 (12:17 -0500)]
osd/PrimaryLogPG: find_object_context: trust SnapSet's clone_snaps

Instead of checking the OSDMap pg_pool_t whether a snap exists, instead

1- Look at the clone_snaps more carefully.  If the snap didn't exist when
the clone was last touched (created or partially-trimmed) then it still
doesn't exist now (snaps aren't resurrected).

2- Check in the OSDMap's removed snaps queue.  This will catch anything
that is still being removed but hasn't been reflected by the clone_snaps
yet.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agoosd/PrimaryLogPG: use osdmap removed_snaps_queue for snap trimming
Sage Weil [Thu, 30 May 2019 15:06:06 +0000 (10:06 -0500)]
osd/PrimaryLogPG: use osdmap removed_snaps_queue for snap trimming

No need to use the pg_pool_t member now--the osdmap has a queue
specifically for the snaps we are in the process of trimming.

Signed-off-by: Sage Weil <sage@redhat.com>
6 years agomon/OSDMonitor: avoid is_removed_snap()
Sage Weil [Thu, 30 May 2019 14:49:06 +0000 (09:49 -0500)]
mon/OSDMonitor: avoid is_removed_snap()

Instead, consult the OSDMap's removed_snap_queue and the mon's record of
purged snaps.

Signed-off-by: Sage Weil <sage@redhat.com>