commit:     3bb809e1da954b79678beed5d6e06dd7907b880a
Author:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
AuthorDate: Wed Aug  2 22:11:27 2017 +0000
Commit:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
CommitDate: Wed Aug  2 22:11:27 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3bb809e1

sys-cluster/ceph: Pull one of the patches from 10.2.9-r3

Package-Manager: Portage-2.3.6, Repoman-2.3.3

 sys-cluster/ceph/ceph-10.2.9-r3.ebuild             |  1 -
 ....2.9-librados_Fix_deadlock_in_watch_flush.patch | 61 ----------------------
 2 files changed, 62 deletions(-)

diff --git a/sys-cluster/ceph/ceph-10.2.9-r3.ebuild 
b/sys-cluster/ceph/ceph-10.2.9-r3.ebuild
index d74301f3760..edd9ac4bbd6 100644
--- a/sys-cluster/ceph/ceph-10.2.9-r3.ebuild
+++ b/sys-cluster/ceph/ceph-10.2.9-r3.ebuild
@@ -118,7 +118,6 @@ PATCHES=(
        
"${FILESDIR}/${PN}-10.2.9-libradosstriper_fix_format_injection_vulnerability.patch"
        
"${FILESDIR}/${PN}-10.2.9-rbd-nbd_relax_size_check_for_newer_kernel_versions.patch"
        "${FILESDIR}/${PN}-10.2.9-filestore_fix_infinit_loops_in_fiemap.patch"
-       "${FILESDIR}/${PN}-10.2.9-librados_Fix_deadlock_in_watch_flush.patch"
        
"${FILESDIR}/${PN}-10.2.9-librbd_filter_expected_error_codes_from_is_exclusive_lock_owner.patch"
        
"${FILESDIR}/${PN}-10.2.9-osd-scrub_to_specifies_clone_ver_but_transaction_include.patch"
        
"${FILESDIR}/${PN}-10.2.9-rbd-do_not_attempt_to_load_key_if_auth_is_disabled.patch"

diff --git 
a/sys-cluster/ceph/files/ceph-10.2.9-librados_Fix_deadlock_in_watch_flush.patch 
b/sys-cluster/ceph/files/ceph-10.2.9-librados_Fix_deadlock_in_watch_flush.patch
deleted file mode 100644
index 77ab14b4295..00000000000
--- 
a/sys-cluster/ceph/files/ceph-10.2.9-librados_Fix_deadlock_in_watch_flush.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 2fb04c40804f646b4cdd3a55ec8a9e9df95b9360 Mon Sep 17 00:00:00 2001
-From: Xiaoxi Chen <[email protected]>
-Date: Sat, 10 Sep 2016 00:23:55 +0800
-Subject: [PATCH] Librados: Fix deadlock in watch_flush
-
-In previous code, in the watch_flush, it is waiting on conditon
-with holding the "lock". The condition will only be signal by
-finisher thread, but sadly, in some cases,when finisher queue
-is not empty, some context need to take the "lock", thus deadlock.
-
-To avoid concurrent call to shutdown cause race condition, add
-a shutdown_lock to ensure only one concurrent in shutdown function.
-
-Signed-off-by: Xiaoxi Chen <[email protected]>
----
- src/librados/RadosClient.cc | 4 ++++
- src/librados/RadosClient.h  | 1 +
- 2 files changed, 5 insertions(+)
-
-diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc
-index 8c5e8ed803fa..230e8b53ecd9 100644
---- a/src/librados/RadosClient.cc
-+++ b/src/librados/RadosClient.cc
-@@ -72,6 +72,7 @@ librados::RadosClient::RadosClient(CephContext *cct_)
-     instance_id(0),
-     objecter(NULL),
-     lock("librados::RadosClient::lock"),
-+    shutdown_lock("librados::RadosClient::shutdown_lock"),
-     timer(cct, lock),
-     refcnt(1),
-     log_last_version(0), log_cb(NULL), log_cb_arg(NULL),
-@@ -324,6 +325,7 @@ int librados::RadosClient::connect()
- 
- void librados::RadosClient::shutdown()
- {
-+  Mutex::Locker l(shutdown_lock);
-   lock.Lock();
-   if (state == DISCONNECTED) {
-     lock.Unlock();
-@@ -338,7 +340,9 @@ void librados::RadosClient::shutdown()
-   if (state == CONNECTED) {
-     if (need_objecter) {
-       // make sure watch callbacks are flushed
-+      lock.Unlock();
-       watch_flush();
-+      lock.Lock();
-     }
-     finisher.wait_for_empty();
-     finisher.stop();
-diff --git a/src/librados/RadosClient.h b/src/librados/RadosClient.h
-index f495ba5966c2..a8ef2070ddcb 100644
---- a/src/librados/RadosClient.h
-+++ b/src/librados/RadosClient.h
-@@ -62,6 +62,7 @@ class librados::RadosClient : public Dispatcher
-   Objecter *objecter;
- 
-   Mutex lock;
-+  Mutex shutdown_lock;
-   Cond cond;
-   SafeTimer timer;
-   int refcnt;

Reply via email to