diff options
| author | Xue jiufei <[email protected]> | 2016-01-14 15:17:18 -0800 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2016-01-14 16:00:49 -0800 |
| commit | 30bee898f86506893883ffb8db20d8101a29b5f5 (patch) | |
| tree | d1998a65a4373824d785773e6a9c2e7b504b01b5 /tools/perf/scripts/python | |
| parent | a84ac334dcb44c76f0b051513a6c27a2d747f883 (diff) | |
ocfs2/dlm: fix a race between purge and migration
We found a race between purge and migration when doing code review.
Node A put lockres to purgelist before receiving the migrate message
from node B which is the master. Node A call dlm_mig_lockres_handler to
handle this message.
dlm_mig_lockres_handler
dlm_lookup_lockres
>>>>>> race window, dlm_run_purge_list may run and send
deref message to master, waiting the response
spin_lock(&res->spinlock);
res->state |= DLM_LOCK_RES_MIGRATING;
spin_unlock(&res->spinlock);
dlm_mig_lockres_handler returns
>>>>>> dlm_thread receives the response from master for the deref
message and triggers the BUG because the lockres has the state
DLM_LOCK_RES_MIGRATING with the following message:
dlm_purge_lockres:209 ERROR: 6633EB681FA7474A9C280A4E1A836F0F: res
M0000000000000000030c0300000000 in use after deref
Signed-off-by: Jiufei Xue <[email protected]>
Reviewed-by: Joseph Qi <[email protected]>
Reviewed-by: Yiwen Jiang <[email protected]>
Cc: Mark Fasheh <[email protected]>
Cc: Joel Becker <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions