diff options
author | Ingo Molnar | 2015-09-30 09:29:27 +0200 |
---|---|---|
committer | Ingo Molnar | 2015-09-30 09:29:27 +0200 |
commit | ccf79c238f1a06a801b4c4449b9bc8a42be2c7bc (patch) | |
tree | e9b0f1a4c2f324c6fb107e276b09894ae480baa6 /fs/ocfs2/dlm/dlmmaster.c | |
parent | x86/hyperv: Fix the build in the !CONFIG_KEXEC_CORE case (diff) | |
parent | Linux 4.3-rc3 (diff) | |
download | kernel-qcow2-linux-ccf79c238f1a06a801b4c4449b9bc8a42be2c7bc.tar.gz kernel-qcow2-linux-ccf79c238f1a06a801b4c4449b9bc8a42be2c7bc.tar.xz kernel-qcow2-linux-ccf79c238f1a06a801b4c4449b9bc8a42be2c7bc.zip |
Merge tag 'v4.3-rc3' into x86/urgent, before applying dependent fix
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/ocfs2/dlm/dlmmaster.c')
-rw-r--r-- | fs/ocfs2/dlm/dlmmaster.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c index 46b8b2bbc95a..ee5aa4daaea0 100644 --- a/fs/ocfs2/dlm/dlmmaster.c +++ b/fs/ocfs2/dlm/dlmmaster.c @@ -1439,6 +1439,7 @@ int dlm_master_request_handler(struct o2net_msg *msg, u32 len, void *data, int found, ret; int set_maybe; int dispatch_assert = 0; + int dispatched = 0; if (!dlm_grab(dlm)) return DLM_MASTER_RESP_NO; @@ -1658,15 +1659,18 @@ send_response: mlog(ML_ERROR, "failed to dispatch assert master work\n"); response = DLM_MASTER_RESP_ERROR; dlm_lockres_put(res); - } else + } else { + dispatched = 1; __dlm_lockres_grab_inflight_worker(dlm, res); + } spin_unlock(&res->spinlock); } else { if (res) dlm_lockres_put(res); } - dlm_put(dlm); + if (!dispatched) + dlm_put(dlm); return response; } @@ -2090,7 +2094,6 @@ int dlm_dispatch_assert_master(struct dlm_ctxt *dlm, /* queue up work for dlm_assert_master_worker */ - dlm_grab(dlm); /* get an extra ref for the work item */ dlm_init_work_item(dlm, item, dlm_assert_master_worker, NULL); item->u.am.lockres = res; /* already have a ref */ /* can optionally ignore node numbers higher than this node */ |