X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftarget%2Fupdate_recovery.c;h=85764cfa073cf82f795137350e5571492cc5090b;hp=2e3652407faab5476447778b5fa1add77b012bd6;hb=a41c6fad4672a60166088b9ad8aeb4f1b51c38e7;hpb=adfb405433aac3691bbd00ed548203c57ce61e3a diff --git a/lustre/target/update_recovery.c b/lustre/target/update_recovery.c index 2e36524..85764cf 100644 --- a/lustre/target/update_recovery.c +++ b/lustre/target/update_recovery.c @@ -44,11 +44,13 @@ #define DEBUG_SUBSYSTEM S_CLASS #include +#include #include #include #include #include #include + #include "tgt_internal.h" /** @@ -443,7 +445,7 @@ again: * we do not need lock here */ if (replace_record) { /* Replace the update record and master transno */ - OBD_FREE(dtrq->dtrq_lur, dtrq->dtrq_lur_size); + OBD_FREE_LARGE(dtrq->dtrq_lur, dtrq->dtrq_lur_size); dtrq->dtrq_lur = NULL; dtrq->dtrq_lur_size = llog_update_record_size(lur); OBD_ALLOC_LARGE(dtrq->dtrq_lur, dtrq->dtrq_lur_size); @@ -1165,6 +1167,17 @@ static int update_recovery_exec(const struct lu_env *env, dt_obj = dt_locate(env, tdtd->tdtd_dt, fid); if (IS_ERR(dt_obj)) { rc = PTR_ERR(dt_obj); + if (rc == -EREMCHG) + LCONSOLE_WARN("%.16s: hit invalid OI mapping " + "for "DFID" during recovering, " + "that may because auto scrub is " + "disabled on related MDT, and " + "will cause recovery failure. " + "Please enable auto scrub and " + "retry the recovery.\n", + tdtd->tdtd_lut->lut_obd->obd_name, + PFID(fid)); + break; } sub_dt_obj = dt_object_child(dt_obj);