]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.39/patches.fixes/dlm-fix-use-count-with-multiple-joins.patch
Fix oinkmaster patch.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.fixes / dlm-fix-use-count-with-multiple-joins.patch
1 From 8511a2728ab82cab398e39d019f5cf1246021c1c Mon Sep 17 00:00:00 2001
2 From: David Teigland <teigland@redhat.com>
3 Date: Wed, 8 Apr 2009 15:38:43 -0500
4 Subject: [PATCH] dlm: fix use count with multiple joins
5
6 When a lockspace was joined multiple times, the global dlm
7 use count was incremented when it should not have been. This
8 caused the global dlm threads to not be stopped when all
9 lockspaces were eventually be removed.
10
11 Signed-off-by: David Teigland <teigland@redhat.com>
12 Signed-off-by: Coly Li <coly.li@suse.de>
13 ---
14 fs/dlm/lockspace.c | 13 ++++++-------
15 1 files changed, 6 insertions(+), 7 deletions(-)
16
17 diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c
18 index 82528d9..d489fcc 100644
19 --- a/fs/dlm/lockspace.c
20 +++ b/fs/dlm/lockspace.c
21 @@ -419,16 +419,14 @@ static int new_lockspace(const char *name, int namelen, void **lockspace,
22 break;
23 }
24 ls->ls_create_count++;
25 - module_put(THIS_MODULE);
26 - error = 1; /* not an error, return 0 */
27 + *lockspace = ls;
28 + error = 1;
29 break;
30 }
31 spin_unlock(&lslist_lock);
32
33 - if (error < 0)
34 - goto out;
35 if (error)
36 - goto ret_zero;
37 + goto out;
38
39 error = -ENOMEM;
40
41 @@ -583,7 +581,6 @@ static int new_lockspace(const char *name, int namelen, void **lockspace,
42 dlm_create_debug_file(ls);
43
44 log_debug(ls, "join complete");
45 - ret_zero:
46 *lockspace = ls;
47 return 0;
48
49 @@ -628,7 +625,9 @@ int dlm_new_lockspace(const char *name, int namelen, void **lockspace,
50 error = new_lockspace(name, namelen, lockspace, flags, lvblen);
51 if (!error)
52 ls_count++;
53 - else if (!ls_count)
54 + if (error > 0)
55 + error = 0;
56 + if (!ls_count)
57 threads_stop();
58 out:
59 mutex_unlock(&ls_lock);
60 --
61 1.6.0.2
62