diff options
author | David Teigland <teigland@redhat.com> | 2007-05-18 08:58:15 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2007-07-09 08:22:31 +0100 |
commit | 85e86edf951a8a39954c0ba1edbe4a58827dcd5c (patch) | |
tree | 0d605cdea61d8301c20a87784456a660aba89017 /fs/dlm/lockspace.c | |
parent | 916297aad5de2363dccd531873eda55d4d6afb57 (diff) | |
download | linux-85e86edf951a8a39954c0ba1edbe4a58827dcd5c.tar.gz linux-85e86edf951a8a39954c0ba1edbe4a58827dcd5c.tar.bz2 linux-85e86edf951a8a39954c0ba1edbe4a58827dcd5c.zip |
[DLM] block scand during recovery [1/6]
Don't let dlm_scand run during recovery since it may try to do a resource
directory removal while the directory nodes are changing.
Signed-off-by: David Teigland <teigland@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/dlm/lockspace.c')
-rw-r--r-- | fs/dlm/lockspace.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c index a677b2a5eed4..414a108df934 100644 --- a/fs/dlm/lockspace.c +++ b/fs/dlm/lockspace.c @@ -234,8 +234,12 @@ static int dlm_scand(void *data) struct dlm_ls *ls; while (!kthread_should_stop()) { - list_for_each_entry(ls, &lslist, ls_list) - dlm_scan_rsbs(ls); + list_for_each_entry(ls, &lslist, ls_list) { + if (dlm_lock_recovery_try(ls)) { + dlm_scan_rsbs(ls); + dlm_unlock_recovery(ls); + } + } schedule_timeout_interruptible(dlm_config.ci_scan_secs * HZ); } return 0; |