diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
commit | 4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch) | |
tree | ba5f07bf3f9d22d82e54a462313f5d244036c768 /sys-cluster/ceph/files/ceph-10.2.9-unlock_sdata_op_ordering_lock_with_sdata_lock.patch |
reinit the tree, so we can have metadata
Diffstat (limited to 'sys-cluster/ceph/files/ceph-10.2.9-unlock_sdata_op_ordering_lock_with_sdata_lock.patch')
-rw-r--r-- | sys-cluster/ceph/files/ceph-10.2.9-unlock_sdata_op_ordering_lock_with_sdata_lock.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/sys-cluster/ceph/files/ceph-10.2.9-unlock_sdata_op_ordering_lock_with_sdata_lock.patch b/sys-cluster/ceph/files/ceph-10.2.9-unlock_sdata_op_ordering_lock_with_sdata_lock.patch new file mode 100644 index 000000000000..60f46ab36a40 --- /dev/null +++ b/sys-cluster/ceph/files/ceph-10.2.9-unlock_sdata_op_ordering_lock_with_sdata_lock.patch @@ -0,0 +1,32 @@ +From 3fa277b479d69699bf5a6875cd4a5efcf9ae0788 Mon Sep 17 00:00:00 2001 +From: Alexey Sheplyakov <asheplyakov@mirantis.com> +Date: Tue, 27 Jun 2017 16:07:01 +0400 +Subject: [PATCH] jewel: osd: unlock sdata_op_ordering_lock with sdata_lock + hold to avoid missing wakeup signal + +Based on commit bc683385819146f3f6f096ceec97e1226a3cd237. The OSD code has +been refactored a lot since Jewel, hence cherry-picking that patch introduces +a lot of unrelated changes, and is much more difficult than reusing the idea. + +Fixes: http://tracker.ceph.com/issues/20428 + +Signed-off-by: Alexey Sheplyakov <asheplyakov@mirantis.com> +--- + src/osd/OSD.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc +index f5cfda3b686a..38a2711f6f92 100644 +--- a/src/osd/OSD.cc ++++ b/src/osd/OSD.cc +@@ -8727,9 +8727,9 @@ void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb ) + assert(NULL != sdata); + sdata->sdata_op_ordering_lock.Lock(); + if (sdata->pqueue->empty()) { +- sdata->sdata_op_ordering_lock.Unlock(); + osd->cct->get_heartbeat_map()->reset_timeout(hb, 4, 0); + sdata->sdata_lock.Lock(); ++ sdata->sdata_op_ordering_lock.Unlock(); + sdata->sdata_cond.WaitInterval(osd->cct, sdata->sdata_lock, utime_t(2, 0)); + sdata->sdata_lock.Unlock(); + sdata->sdata_op_ordering_lock.Lock(); |