When set bluestore_sync_wal_apply = false, the osd must be crashed.
I add some debug message in WALWQ::_dequeue():
// preserve wal ordering for this sequencer by taking the lock
/ while still holding the queue lock
- i->osr->wal_apply_lock.lock();
+ try {
+ i->osr->wal_apply_lock.lock();
+ } catch (const system_error& e) {
+ if (e.code() == std::errc::resource_deadlock_would_occur) {
+ assert(0 == "would deadlock");
+ } else
+ assert(0 == "other system_error");
+ }
return i;
}
2016-05-24 00:02:29.107165 7f0f32ea6700 -1 os/bluestore/BlueStore.h: In
function 'virtual BlueStore::TransContext* BlueStore::WALWQ::_dequeue()'
thread 7f0f32ea6700 time 2016-05-24 00:02:29.103360
os/bluestore/BlueStore.h: 489: FAILED assert(0 == "would deadlock")
ceph version 10.2.0-1232-g21c7599 (21c759936d)
1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x80) [0x560196215ac0]
2: (ThreadPool::WorkQueue<BlueStore::TransContext>::_void_dequeue()+0x234)[0x560195e618b4]
3: (ThreadPool::worker(ThreadPool::WorkThread*)+0x654) [0x560196207324]
4: (ThreadPool::WorkThread::entry()+0x10) [0x560196208d70]
5: (()+0x760a) [0x7f0f411d260a]
6: (clone()+0x6d) [0x7f0f3f17a59d]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is
needed to interpret this.
This because the wron usage of std::unique_lock.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
BackoffThrottle: fix for freebsd and avoid spinning when full
Reviewed-by: Willem Jan Withagen <wjw@digiware.nl>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
The fixfiles command won't fix label for /var/run/ceph (/run is probably
excluded from relabel), we need to restore the context manually.
Signed-off-by: Boris Ranto <branto@redhat.com>
Currently, we don't mute the semodule output in postun script. This
results in the following message when removing ceph-selinux package:
libsemanage.semanage_direct_remove_key: Removing last ceph module (no
other ceph module exists at another priority).
The fix is to simply mute the output of the command.
Signed-off-by: Boris Ranto <branto@redhat.com>
This reverts commit a53d932fc4.
If the interpret is passed to postun script, everything until the next
rpm section gets interpreted as the input for the interpret (in this
case ldconfig). This results in warnings like
/sbin/ldconfig: relative path `0' used to build cache
when removing the packages that pass the interpret because we use
several '#' characters to separate the subpackage sections and these get
passed to the ldconfig.
Using the default interpret (bash) fixes the warning. I'm also doing the
same to %post script for consistency.
Signed-off-by: Boris Ranto <branto@redhat.com>
Otherwise, we risk spinning on wait_for() with a small
delay.
Fixes: http://tracker.ceph.com/issues/15953
Signed-off-by: Samuel Just <sjust@redhat.com>