Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
- land b_hd_ver_recov
[fs/lustre-release.git]
/
lustre
/
ptlrpc
/
import.c
diff --git
a/lustre/ptlrpc/import.c
b/lustre/ptlrpc/import.c
index
eef7b7e
..
baa4fb8
100644
(file)
--- a/
lustre/ptlrpc/import.c
+++ b/
lustre/ptlrpc/import.c
@@
-1149,12
+1149,23
@@
static int completed_replay_interpret(const struct lu_env *env,
{
ENTRY;
atomic_dec(&req->rq_import->imp_replay_inflight);
- if (req->rq_status == 0) {
+ if (req->rq_status == 0 &&
+ !req->rq_import->imp_vbr_failed) {
ptlrpc_import_recovery_state_machine(req->rq_import);
} else {
- CDEBUG(D_HA, "%s: LAST_REPLAY message error: %d, "
- "reconnecting\n",
- req->rq_import->imp_obd->obd_name, req->rq_status);
+ if (req->rq_import->imp_vbr_failed) {
+ CDEBUG(D_WARNING,
+ "%s: version recovery fails, reconnecting\n",
+ req->rq_import->imp_obd->obd_name);
+ spin_lock(&req->rq_import->imp_lock);
+ req->rq_import->imp_vbr_failed = 0;
+ spin_unlock(&req->rq_import->imp_lock);
+ } else {
+ CDEBUG(D_HA, "%s: LAST_REPLAY message error: %d, "
+ "reconnecting\n",
+ req->rq_import->imp_obd->obd_name,
+ req->rq_status);
+ }
ptlrpc_connect_import(req->rq_import, NULL);
}