1 |
commit: 3bb809e1da954b79678beed5d6e06dd7907b880a |
2 |
Author: Patrick McLean <chutzpah <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Aug 2 22:11:27 2017 +0000 |
4 |
Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Aug 2 22:11:27 2017 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3bb809e1 |
7 |
|
8 |
sys-cluster/ceph: Pull one of the patches from 10.2.9-r3 |
9 |
|
10 |
Package-Manager: Portage-2.3.6, Repoman-2.3.3 |
11 |
|
12 |
sys-cluster/ceph/ceph-10.2.9-r3.ebuild | 1 - |
13 |
....2.9-librados_Fix_deadlock_in_watch_flush.patch | 61 ---------------------- |
14 |
2 files changed, 62 deletions(-) |
15 |
|
16 |
diff --git a/sys-cluster/ceph/ceph-10.2.9-r3.ebuild b/sys-cluster/ceph/ceph-10.2.9-r3.ebuild |
17 |
index d74301f3760..edd9ac4bbd6 100644 |
18 |
--- a/sys-cluster/ceph/ceph-10.2.9-r3.ebuild |
19 |
+++ b/sys-cluster/ceph/ceph-10.2.9-r3.ebuild |
20 |
@@ -118,7 +118,6 @@ PATCHES=( |
21 |
"${FILESDIR}/${PN}-10.2.9-libradosstriper_fix_format_injection_vulnerability.patch" |
22 |
"${FILESDIR}/${PN}-10.2.9-rbd-nbd_relax_size_check_for_newer_kernel_versions.patch" |
23 |
"${FILESDIR}/${PN}-10.2.9-filestore_fix_infinit_loops_in_fiemap.patch" |
24 |
- "${FILESDIR}/${PN}-10.2.9-librados_Fix_deadlock_in_watch_flush.patch" |
25 |
"${FILESDIR}/${PN}-10.2.9-librbd_filter_expected_error_codes_from_is_exclusive_lock_owner.patch" |
26 |
"${FILESDIR}/${PN}-10.2.9-osd-scrub_to_specifies_clone_ver_but_transaction_include.patch" |
27 |
"${FILESDIR}/${PN}-10.2.9-rbd-do_not_attempt_to_load_key_if_auth_is_disabled.patch" |
28 |
|
29 |
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 |
30 |
deleted file mode 100644 |
31 |
index 77ab14b4295..00000000000 |
32 |
--- a/sys-cluster/ceph/files/ceph-10.2.9-librados_Fix_deadlock_in_watch_flush.patch |
33 |
+++ /dev/null |
34 |
@@ -1,61 +0,0 @@ |
35 |
-From 2fb04c40804f646b4cdd3a55ec8a9e9df95b9360 Mon Sep 17 00:00:00 2001 |
36 |
-From: Xiaoxi Chen <xiaoxchen@××××.com> |
37 |
-Date: Sat, 10 Sep 2016 00:23:55 +0800 |
38 |
-Subject: [PATCH] Librados: Fix deadlock in watch_flush |
39 |
- |
40 |
-In previous code, in the watch_flush, it is waiting on conditon |
41 |
-with holding the "lock". The condition will only be signal by |
42 |
-finisher thread, but sadly, in some cases,when finisher queue |
43 |
-is not empty, some context need to take the "lock", thus deadlock. |
44 |
- |
45 |
-To avoid concurrent call to shutdown cause race condition, add |
46 |
-a shutdown_lock to ensure only one concurrent in shutdown function. |
47 |
- |
48 |
-Signed-off-by: Xiaoxi Chen <xiaoxchen@××××.com> |
49 |
---- |
50 |
- src/librados/RadosClient.cc | 4 ++++ |
51 |
- src/librados/RadosClient.h | 1 + |
52 |
- 2 files changed, 5 insertions(+) |
53 |
- |
54 |
-diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc |
55 |
-index 8c5e8ed803fa..230e8b53ecd9 100644 |
56 |
---- a/src/librados/RadosClient.cc |
57 |
-+++ b/src/librados/RadosClient.cc |
58 |
-@@ -72,6 +72,7 @@ librados::RadosClient::RadosClient(CephContext *cct_) |
59 |
- instance_id(0), |
60 |
- objecter(NULL), |
61 |
- lock("librados::RadosClient::lock"), |
62 |
-+ shutdown_lock("librados::RadosClient::shutdown_lock"), |
63 |
- timer(cct, lock), |
64 |
- refcnt(1), |
65 |
- log_last_version(0), log_cb(NULL), log_cb_arg(NULL), |
66 |
-@@ -324,6 +325,7 @@ int librados::RadosClient::connect() |
67 |
- |
68 |
- void librados::RadosClient::shutdown() |
69 |
- { |
70 |
-+ Mutex::Locker l(shutdown_lock); |
71 |
- lock.Lock(); |
72 |
- if (state == DISCONNECTED) { |
73 |
- lock.Unlock(); |
74 |
-@@ -338,7 +340,9 @@ void librados::RadosClient::shutdown() |
75 |
- if (state == CONNECTED) { |
76 |
- if (need_objecter) { |
77 |
- // make sure watch callbacks are flushed |
78 |
-+ lock.Unlock(); |
79 |
- watch_flush(); |
80 |
-+ lock.Lock(); |
81 |
- } |
82 |
- finisher.wait_for_empty(); |
83 |
- finisher.stop(); |
84 |
-diff --git a/src/librados/RadosClient.h b/src/librados/RadosClient.h |
85 |
-index f495ba5966c2..a8ef2070ddcb 100644 |
86 |
---- a/src/librados/RadosClient.h |
87 |
-+++ b/src/librados/RadosClient.h |
88 |
-@@ -62,6 +62,7 @@ class librados::RadosClient : public Dispatcher |
89 |
- Objecter *objecter; |
90 |
- |
91 |
- Mutex lock; |
92 |
-+ Mutex shutdown_lock; |
93 |
- Cond cond; |
94 |
- SafeTimer timer; |
95 |
- int refcnt; |