Gentoo Archives: gentoo-commits

From: Patrick McLean <chutzpah@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-cluster/ceph/, sys-cluster/ceph/files/
Date: Wed, 02 Aug 2017 22:11:44
Message-Id: 1501711887.3bb809e1da954b79678beed5d6e06dd7907b880a.chutzpah@gentoo
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;