GOTO(out_parent, rc = PTR_ERR(child));
OBD_FAIL_TIMEOUT(OBD_FAIL_MDS_RESEND, obd_timeout * 2);
+ if (!mdt_object_exists(child)) {
+ LU_OBJECT_DEBUG(D_INODE, info->mti_env,
+ &child->mot_obj,
+ "Object doesn't exist!\n");
+ GOTO(out_child, rc = -ENOENT);
+ }
+
rc = mdt_check_resent_lock(info, child, lhc);
if (rc < 0) {
GOTO(out_child, rc);
mdt_lock_reg_init(lhc, LCK_PR);
try_layout = false;
- if (!mdt_object_exists(child)) {
- LU_OBJECT_DEBUG(D_INODE, info->mti_env,
- &child->mot_obj,
- "Object doesn't exist!\n");
- GOTO(out_child, rc = -ENOENT);
- }
-
if (!(child_bits & MDS_INODELOCK_UPDATE) &&
mdt_object_exists(child) && !mdt_object_remote(child)) {
struct md_attr *ma = &info->mti_attr;
if (flv->it_act != NULL) {
struct ldlm_reply *rep;
+ OBD_FAIL_TIMEOUT(OBD_FAIL_MDS_INTENT_DELAY, 10);
+
/* execute policy */
rc = flv->it_act(opc, info, lockp, flags);
LASSERT(num);
node_id = simple_strtol(num, NULL, 10);
obd->u.obt.obt_magic = OBT_MAGIC;
+ if (lsi->lsi_lmd != NULL &&
+ lsi->lsi_lmd->lmd_flags & LMD_FLG_SKIP_LFSCK)
+ m->mdt_skip_lfsck = 1;
}
m->mdt_squash.rsi_uid = 0;
static int mdt_postrecov(const struct lu_env *env, struct mdt_device *mdt)
{
struct lu_device *ld = md2lu_dev(mdt->mdt_child);
- struct lfsck_start_param lsp;
int rc;
ENTRY;
- lsp.lsp_start = NULL;
- lsp.lsp_index_valid = 0;
- rc = mdt->mdt_child->md_ops->mdo_iocontrol(env, mdt->mdt_child,
- OBD_IOC_START_LFSCK,
- 0, &lsp);
- if (rc != 0 && rc != -EALREADY)
- CWARN("%s: auto trigger paused LFSCK failed: rc = %d\n",
- mdt_obd_name(mdt), rc);
+ if (!mdt->mdt_skip_lfsck) {
+ struct lfsck_start_param lsp;
+
+ lsp.lsp_start = NULL;
+ lsp.lsp_index_valid = 0;
+ rc = mdt->mdt_child->md_ops->mdo_iocontrol(env, mdt->mdt_child,
+ OBD_IOC_START_LFSCK,
+ 0, &lsp);
+ if (rc != 0 && rc != -EALREADY)
+ CWARN("%s: auto trigger paused LFSCK failed: rc = %d\n",
+ mdt_obd_name(mdt), rc);
+ }
rc = ld->ld_ops->ldo_recovery_complete(env, ld);
RETURN(rc);