From 6a3be6c92626b07dec5d486277f0086bebc698e6 Mon Sep 17 00:00:00 2001 From: David Teigland Date: Tue, 31 Oct 2006 11:56:08 -0600 Subject: [PATCH] --- yaml --- r: 43287 b: refs/heads/master c: 2cdc98aaf072d573df10c503d3b3b0b74e2a6d06 h: refs/heads/master i: 43285: 6babb7638071f34b7ea1fde8148edef3758fb56a 43283: 1ef33d1523c9580a94f7b8bce20fb4ec7778aa6b 43279: 36ca3cae4bd98879a39dfac648068a26737e6a58 v: v3 --- [refs] | 2 +- trunk/fs/dlm/recoverd.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index eda7e1458cbc..7a70514d06e2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 91c0dc93a1a6bbdd79707ed311e48b4397df177f +refs/heads/master: 2cdc98aaf072d573df10c503d3b3b0b74e2a6d06 diff --git a/trunk/fs/dlm/recoverd.c b/trunk/fs/dlm/recoverd.c index 4a1d6023fd9b..6e4ee94ce7df 100644 --- a/trunk/fs/dlm/recoverd.c +++ b/trunk/fs/dlm/recoverd.c @@ -219,6 +219,10 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) return error; } +/* The dlm_ls_start() that created the rv we take here may already have been + stopped via dlm_ls_stop(); in that case we need to leave the RECOVERY_STOP + flag set. */ + static void do_ls_recovery(struct dlm_ls *ls) { struct dlm_recover *rv = NULL; @@ -226,7 +230,8 @@ static void do_ls_recovery(struct dlm_ls *ls) spin_lock(&ls->ls_recover_lock); rv = ls->ls_recover_args; ls->ls_recover_args = NULL; - clear_bit(LSFL_RECOVERY_STOP, &ls->ls_flags); + if (rv && ls->ls_recover_seq == rv->seq) + clear_bit(LSFL_RECOVERY_STOP, &ls->ls_flags); spin_unlock(&ls->ls_recover_lock); if (rv) {