There could be a race for Onodes put() and get() methods:
put()(pinned, nref=3)
int n = --nref; (nref = 2)
if (n == 2) {
..
std::lock_guard l(ocs->lock);
...
pinned = pinned && nref > 2; (= false)
... get()
if (r) { ++nref; (=3)
n = --nref; (nref = 2) return;
}
...
return
As a result nref = 2, pinned = false which is wrong
Signed-off-by: Igor Fedotov <ifedotov@suse.com>
Parameter now supports a comma separated list of subnets and
detects the ipv4 or ipv6 setting on the cluster network to enable
osds to bind correctly.
Signed-off-by: Paul Cuzner <pcuzner@redhat.com>
Install guide updated to include a description of the --cluster-network
parameter. The text also links to the complete definition for cluster-network
on the rados/configuration/network-config-ref page.
Signed-off-by: Paul Cuzner <pcuzner@redhat.com>
For octopus -> pacific, as with other recent releases, we need to scale
down the MDS cluster(s) to a single daemon before upgrading. (This is
because the MDS intra-cluster protocols aren't fully versioned.)
Signed-off-by: Sage Weil <sage@newdream.net>
The image id can vary across hosts and (most notably) docker vs podman.
Instead, use the repo_digest as an image identifier.
Unfortunately, a single image may have multiple digests, even within the
same registry, so keep a list of the digests for the image we are
upgrading to, and ensure that each container has a digest that matches at
least one of them.
This allows upgrade to proceed in mixed docker+podman clusters. However,
it does not yet address a cluster with mixed CPU architectures, because
the container image will have different digest(s) for each architecture
build.
Signed-off-by: Sage Weil <sage@newdream.net>
When we inspect a (pulled) image, return all of the repo digests. Update
the mgr/cephadm code accordingly to match.
Signed-off-by: Sage Weil <sage@newdream.net>
Otherwise the container_image value includes the same hash twice, separated
by a newline, causing all sorts of confusion.
Signed-off-by: Sage Weil <sage@newdream.net>
After we've upgraded all of the osds, complete the major version upgrade
for core RADOS by setting the OSD cluster min.
Signed-off-by: Sage Weil <sage@newdream.net>
With podman 2.2.1 I would get
ERRO[0000] Error printing inspect output: template: all inspect:1: function "json" not defined
Removing the 'json' portion of the query resolves it.
Signed-off-by: Sage Weil <sage@newdream.net>
Mostly, operating on an invalid extent is harmless by construction --
it'll be caught by the read set check in submit_transaction. However,
prior to adding an extent to the lba pin set, we need to check that it's
really still live, which we can do by checking that it and its immediate
parent are still valid. Mutating the target extent would have
invalidated it, and replacing the target extent would necessarily have
involved a mutation to the parent, which would have invalidated it.
Signed-off-by: Samuel Just <sjust@redhat.com>
There are cases where reads may detect an invalid cached extent and require
the user to restart the transaction.
As a side effect, clean up errorators to assert cases where construction
is invalid (invalid refcounts, enoent or invarg on node read, etc). In
such cases, we may eventually want to introduce an internal_error error
type, but asserting is fine for now as we do not expect users to handle
these cases.
Signed-off-by: Samuel Just <sjust@redhat.com>
Do not encode new metric|config types for older peers.
The combination of boost::optional and boost::variant make this super
awkward to condition on the features. :(
Fixes: https://tracker.ceph.com/issues/49069
Signed-off-by: Sage Weil <sage@newdream.net>
Commit 3754c665a1 (":qa/tasks/rbd: test qemu on top of rbd
encryption") broke dev_create() for krbd by messing up the "wait
for the symlink to be created by udev" loop. The rbd tool has been
synchronizing with udev internally since 2014, so rather than fixing
let's just drop it.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
In order to add encryption_format property, commit 3754c665a1
(":qa/tasks/rbd: test qemu on top of rbd encryption") changed the
dev_create() contract. It now expects a properties dict, but the
main task routine wasn't updated and still passes role_images.
On top of that, role_images itself got broken. It is supposed
to be a mapping from role to a corresponding image name, not to
a dict with an image_name key. This affected generic_mount().
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit vets the PendingReleaseNotes for Octopus.
This might not be the only commit that updates the
release notes, but it is the first by me.
Signed-off-by: Zac Dover <zac.dover@gmail.com>