summaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/localalloc.c
diff options
context:
space:
mode:
authorXue jiufei <xuejiufei@huawei.com>2013-09-11 23:19:46 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-12 00:56:31 +0200
commit98ac9125c5afed8c5d2e4c5824988f8ad51814e1 (patch)
tree123fa8641217bf5891caa2179146ec0a54de0dbd /fs/ocfs2/localalloc.c
parentocfs2: use i_size_read() to access i_size (diff)
downloadlinux-98ac9125c5afed8c5d2e4c5824988f8ad51814e1.tar.xz
linux-98ac9125c5afed8c5d2e4c5824988f8ad51814e1.zip
ocfs2: dlm_request_all_locks() should deal with the status sent from target node
dlm_request_all_locks() should deal with the status sent from target node if DLM_LOCK_REQUEST_MSG is sent successfully, or recovery master will fall into endless loop, waiting for other nodes to send locks and DLM_RECO_DATA_DONE_MSG to me. NodeA NodeB selected as recovery master dlm_remaster_locks() ->dlm_request_all_locks() send DLM_LOCK_REQUEST_MSG to nodeA It happened that NodeA cannot alloc memory when it processes this message. dlm_request_all_locks_handler() do not queue dlm_request_all_locks_worker and returns -ENOMEM. It will never send locks and DLM_RECO_DATA_DONE_MSG to NodeB. NodeB do not deal with the status sent from nodeA, and will fall in endless loop waiting for the recovery state of NodeA to be changed. Signed-off-by: joyce <xuejiufei@huawei.com> Cc: Mark Fasheh <mfasheh@suse.com> Cc: Jeff Liu <jeff.liu@oracle.com> Cc: Joel Becker <jlbec@evilplan.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ocfs2/localalloc.c')
0 files changed, 0 insertions, 0 deletions