librbd requires the ObjectCacher flusher thread to acquire
an additional lock in order to maintain lock ordering
constraints.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
It is expected that all IO is flushed and all async ops are cancelled
prior to releasing the exclusive lock. Therefore, replace handling of
lost exclusive locks in state machines with an assertion.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
In order to support the invariant that all state machine
callbacks occur without holding locks, transitions that
don't always involve a librados call should queue their
callback.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
It is only used by clients and it causes a large slowdown
in performance due to the rate at which the lock is constructed/
destructed for each IO request.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
The callback routine most likely will attempt to retrieve the result
code, which will result in a recursive lock attempt.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
The ObjectCacher complete the read callback while still holding
the cache lock. This introduces lock ordering issues which are
resolved by queuing the completion to execute in a clean (unlocked)
context.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
librbd use of an image hierarchy resulted in lock names being
re-used and incorrectly analyzed. librbd now uses unique lock
names per instance, but to prevent an unbounded growth of
tracked locks, we now remove lock tracking once a lock is
destructed.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
common/Cycles.cc: skip initialization if rdtsc is not implemented
Reviewed-by: Boris Ranto <branto@redhat.com>
Reviewed-by: Haomai Wang <haomaiwang@gmail.com>
in 8e61a99, we try to init the plugin when user set a profile using
"ceph osd erasure-code-profile set <profile-name> <profile>", so
if user passes in an unknown plugin, ceph will reject it right away,
instead of loading the plugin when "ceph osd crush rule create-erasure".
Fixes: #11870
Signed-off-by: Kefu Chai <kchai@redhat.com>
* only create "wheelhouse" directory for tox when it is populated
with all packages in *requiresments.txt. before than, the wheels
are put in "wheelhouse-wip"
Fixes: #11869
Signed-off-by: Kefu Chai <kchai@redhat.com>
The Cycles initialization gets stuck in infinite loop if rdtsc is not
implemented. This patch fixes the issue by quitting the initialization
if rtdsc fails.
The patch was cherry-picked from ubuntu patch by James Page, see
https://bugzilla.redhat.com/show_bug.cgi?id=1222286
for more details on the patch.
Signed-off-by: James Page <james.page@ubuntu.com>
This reverts commit 6f495974a8.
This needs more discussion, since "make install" does not currently
create /usr/lib/ceph (and maybe /usr/share/ceph?)
This fixes the rpmbuild failure,
error: File not found:
/srv/autobuild-ceph/gitbuilder.git/build/rpmbuild/BUILDROOT/ceph-9.0.0-1225.ga16afdd.el6.x86_64/usr/lib/ceph
Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
Commit d8abde3338 introduced a stray
%endif. Remove it.
This fixes the build error:
"error: /srv/autobuild-ceph/gitbuilder.git/build/ceph.spec:140: Got a
%endif with no %if"
Reported-by: Greg Farnum <gfarnum@redhat.com>
Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
The install-deps.sh step is the same for Debian and RPM-based systems.
Simplify the two README sections into a single section.
Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
It may take tens of seconds to restart each time, so 5 in 30s does not stop
the crash on startup respawn loop in many cases. In particular, we'd like
to catch the case where the internal heartbeats fail.
This should be enough for all but the most sluggish of OSDs and capture
many cases of failure shortly after startup.
Fixes: #11798
Signed-off-by: Sage Weil <sage@redhat.com>