Kefu Chai [Sat, 16 Jan 2021 06:33:17 +0000 (14:33 +0800)]
mgr: update mon metadata when monmap is updated
there is chance that some monitor(s) is updated / upgraded in a single
monmap update without being removed from cluster state's metata first,
so, without this change, we will not update the metadata associated with
that monitor, hence the mgr modules which consumes the metadata is not
updated accordingly and keep reporting the stale information.
in this change, we always update the metadata associated with all monitor
included by the latest monmap. multiple "mon metadata" commands are sent
to monitor for retrieving their updated metadata, instead of sending a
single one, so that we can reuse "MetadataUpdate" to update the metadata
of a given daemon. as the number of monitors in a typical cluster is
relatively small, and the frequency of monmap update is low, so this
overhead should be fine.
unlike other places where we ask mon for metadata in Mgr class, the code
sending the mon command for updated monitor metata is located outside of
`cluster_state.with_monmap()` block, the reason is that `with_monmap()`
is guraded by the monc_lock under the hood, while `start_mon_command()`
also need to acquire the monc_lock, which is not a recursive lock. so we
have to do this out of the `with_monmap()` block.
Adam Kupczyk [Thu, 24 Sep 2020 10:54:46 +0000 (12:54 +0200)]
BlueStore: Add block_cache logic to column family definition
Modified original onode column family cache into generic feature.
Now 2 options are possible for each column family:
1) use generic block cache but apply different BlockBasedTableOptions
2) create separate block cache. it will be applied for all shards of column family
It is done by specifying special option "block_cache" to CF definition:
Example: O(3,0-13)=block_cache={high_ratio=1.000}
"block_cache" accepts all BlockBasedTableOptions options with additions:
-"type" - binned_lru/lru/clock (default: ceph_options.rocksdb_cache_type)
-"size" - e.g.: 100M (default: ceph_options.rocksdb_cache_size)
-"high_ratio" - e.g.: 0.75 (default: 0.0)
If any of above is set, new block cache is created, otherwise default is used.
Thomas Goirand [Fri, 15 Jan 2021 09:50:05 +0000 (10:50 +0100)]
common/ipaddr: Allow binding on lo
Commmit 5cf0fa872231f4eaf8ce6565a04ed675ba5b689b, solves the issue that
the osd can't restart after seting a virtual local loopback IP. However,
this commit also prevents a bgp-to-the-host over unumbered Ipv6
local-link is setup, where OSD typically are bound to the lo interface.
To solve this, this single char patch simply checks against "lo:" to
match only virtual interfaces instead of anything that starts with "lo".
Fixes: https://tracker.ceph.com/issues/48893 Signed-off-by: Thomas Goirand <zigo@debian.org>
Kefu Chai [Tue, 12 Jan 2021 14:24:42 +0000 (22:24 +0800)]
doc/_ext: parse prefix and args for command signature
unlike the commands defined by C++, the commands defined by python
now uses "prefix" and "args" properties of elements in COMMAND class
attribute to define their command and arguments. the "cmd" property is
still available for the ceph CLI.
but the ceph_command sphinx extension should now use "prefix" and "args"
for printing out the usage of commands implemented using python. in
this change, the extension is updated to read "prefix" and "args"
properties of command defined by python modules.
peng jiaqi [Tue, 5 Jan 2021 03:15:26 +0000 (11:15 +0800)]
mgr: fix deadlock in ActivePyModules::get_osdmap()
In function "ActivePyModules::get_osdmap()", We do not read or write to
object "ActivePyModules", so it is safe to delete lock
"ActivePyModules::lock", and it can avoid other thread waiting for lock
"ActivePyModules::lock"
Kefu Chai [Sun, 27 Dec 2020 14:42:33 +0000 (22:42 +0800)]
pybind/mgr/mgr_module: cast string to enum when collecting kwargs
as the parameters of handlers are properly typed, they are expecting
enum parameter, let's cast string parameter to enum if the callee claims
that it wants an enum.
Kefu Chai [Wed, 13 Jan 2021 11:28:48 +0000 (19:28 +0800)]
pybind/mgr/mgr_module: preserve the signature of wrapped func
before this change, the annotations of the func wrapped by
CLICheckNonemptyFileInput and returns_command_result are lost after being
wrapped with this decorator. after this change, the parameter annotations
are preserved. these annotations are used for generating the argdesc in a
later commit.
Kefu Chai [Fri, 15 Jan 2021 01:27:26 +0000 (09:27 +0800)]
mgr/cephadm: s/yield_fixture/fixture/
silences pytest warning. it complained:`
1: cephadm/tests/fixtures.py:68
1: /var/ssd/ceph/src/pybind/mgr/cephadm/tests/fixtures.py:68: PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
1: Use @pytest.fixture instead; they are the same.
1: @pytest.yield_fixture()
Patrick Donnelly [Thu, 14 Jan 2021 16:09:01 +0000 (08:09 -0800)]
Merge PR #34858 into master
* refs/pull/34858/head:
mds: do not allow the service to run on Windows
win32*.sh: fix SKIP_TESTS flag
include/win32/win32_errno:h Add missing include
client: Port CephFS client to Windows
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com> Reviewed-by: Jeff Layton <jlayton@redhat.com>
Jason Dillaman [Wed, 13 Jan 2021 18:50:41 +0000 (13:50 -0500)]
librbd/migration: add support for reading from QCOW2 snapshots
Tweak the IO read path to now utilize the L1 table associated with
the specified snapshot id. This will cause the IO to properly read
from the specific snapshot.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Jason Dillaman [Wed, 13 Jan 2021 02:19:22 +0000 (21:19 -0500)]
librbd/migration: decode QCOW2 snapshot metadata during open
This will allow the migration state machine to build matching RBD
snapshots to mimic the QCOW2 snapshots. The next commit will add the
ability to read from a snapshot.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Jason Dillaman [Tue, 12 Jan 2021 20:35:49 +0000 (15:35 -0500)]
librbd/migration: basic QCOW2 format handler
The initial implementation does not support backing files, compression,
snapshots, (deprecated) encryption, external data files, nor L2 subcluster
allocation. The former three features will be added in a future commit.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Jason Dillaman [Tue, 12 Jan 2021 03:12:27 +0000 (22:12 -0500)]
librbd/migration: basic QCOW v1 format handler
The initial implementation does not support backing files, compression, nor
(deprecated) encryption. The former two features will be added in a future commit.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
Kefu Chai [Sun, 27 Dec 2020 04:44:39 +0000 (12:44 +0800)]
pybind/ceph_argparse: add argdesc() method to type classes
so they can be used to build argdesc from method annotations, these
argdesc strings will be consumed by ceph CLI to do client-side
validation of command arguments.
Ronen Friedman [Thu, 14 Jan 2021 08:02:19 +0000 (10:02 +0200)]
os/bluestore: fixing a dangling pointer
... and silencing compiler warnings:
Building CXX object src/os/CMakeFiles/os.dir/bluestore/BlueStore.cc.o
../src/os/bluestore/BlueStore.cc:8603:25: warning: object backing the pointer will be destroyed at the end of the full-expression [-Wdangling-gsl]
const char *c = it->key().c_str();
^~~~~~~~~
../src/os/bluestore/BlueStore.cc:8623:25: warning: object backing the pointer will be destroyed at the end of the full-expression [-Wdangling-gsl]
const char* c = it->key().c_str();
^~~~~~~~~
(reverting a minor part of ifed01)