int rc = 0;
ENTRY;
+ if (com->lc_lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 0);
+
idx = lfsck_sub_trace_file_fid2idx(pfid);
obj = com->lc_sub_trace_objs[idx].lsto_obj;
dev = lfsck_obj2dev(obj);
mutex_unlock(&com->lc_sub_trace_objs[idx].lsto_mutex);
+log:
CDEBUG(D_LFSCK, "%s: insert the paris "DFID" => "DFID", comp_id = %u, "
"ea_off = %u, ost_idx = %u, into the trace file for further "
"dangling check: rc = %d\n", lfsck_lfsck2name(com->lc_lfsck),
int rc = 0;
ENTRY;
+ if (com->lc_lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 0);
+
idx = lfsck_sub_trace_file_fid2idx(fid);
obj = com->lc_sub_trace_objs[idx].lsto_obj;
dev = lfsck_obj2dev(obj);
mutex_unlock(&com->lc_sub_trace_objs[idx].lsto_mutex);
+log:
CDEBUG(D_LFSCK, "%s: delete the dangling record for "DFID
", comp_id = %u, ea_off = %u from the trace file: rc = %d\n",
lfsck_lfsck2name(com->lc_lfsck), PFID(fid), comp_id, ea_off, rc);
struct lu_buf buf = { NULL };
int rc;
+ if (com->lc_lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ RETURN(0);
+
ff->ff_parent.f_seq = cpu_to_le64(pfid->f_seq);
ff->ff_parent.f_oid = cpu_to_le32(pfid->f_oid);
/* Currently, the filter_fid::ff_parent::f_ver is not the real parent
int rc = 0;
ENTRY;
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ RETURN(0);
+
obj = lfsck_object_find_by_dev(env, dev, fid);
if (IS_ERR(obj))
RETURN(PTR_ERR(obj));
if (!(lfsck->li_bookmark_ram.lb_param & LPF_CREATE_OSTOBJ))
GOTO(log, rc = 1);
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 1);
+
rc = lfsck_ibits_lock(env, lfsck, parent, &lh,
MDS_INODELOCK_LAYOUT | MDS_INODELOCK_XATTR,
LCK_EX);
int rc;
ENTRY;
+ if (com->lc_lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 0);
+
rc = lfsck_ibits_lock(env, com->lc_lfsck, parent, &lh,
MDS_INODELOCK_LAYOUT | MDS_INODELOCK_XATTR,
LCK_EX);
int rc;
ENTRY;
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ RETURN(0);
+
/* We use two separated transactions to repair the inconsistency.
*
* 1) create the child (OST-object).
dt_obj_version_t version;
ENTRY;
+ if (com->lc_lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ RETURN(0);
+
tla->la_uid = pla->la_uid;
tla->la_gid = pla->la_gid;
tla->la_valid = LA_UID | LA_GID;
int rc;
ENTRY;
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 0);
+
handle = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(handle))
RETURN_EXIT;
stop:
dt_trans_stop(env, dev, handle);
+log:
CDEBUG(D_LFSCK, "destroy orphan OST-object "DFID": rc = %d\n",
PFID(lfsck_dto2fid(obj)), rc);
GOTO(log, rc);
}
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 0);
+
th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
GOTO(log, rc = PTR_ERR(th));
LASSERT(dt_object_remote(obj) == 0);
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(unlock, rc = 0);
+
th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
GOTO(log, rc = PTR_ERR(th));
if (unlikely(lfsck_is_dead_obj(obj)))
GOTO(unlock, rc = -ENOENT);
- if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
- GOTO(unlock, rc = 0);
-
rc = dt_xattr_del(env, obj, XATTR_NAME_LINK, th);
GOTO(unlock, rc);
exist = false;
}
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 0);
+
cname->ln_name = info->lti_key;
cname->ln_namelen = namelen;
rc = linkea_links_new(&ldata2, &info->lti_linkea_buf2,
int rc = 0;
ENTRY;
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 0);
+
rc = lfsck_ibits_lock(env, lfsck, obj, &lh,
MDS_INODELOCK_UPDATE | MDS_INODELOCK_XATTR,
LCK_EX);
int rc = 0;
ENTRY;
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 1);
+
th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
GOTO(log, rc = PTR_ERR(th));
if (unlikely(lfsck_is_dead_obj(obj)))
GOTO(unlock, rc = 0);
- if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
- GOTO(unlock, rc = 1);
-
rc = dt_xattr_set(env, obj, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(log, rc);
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(unlock1, rc = 1);
+
th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
GOTO(unlock1, rc = PTR_ERR(th));
if (!lu_fid_eq(&tfid, &cfid))
GOTO(unlock2, rc = 0);
- if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
- GOTO(unlock2, rc = 1);
-
rc = dt_delete(env, parent, (const struct dt_key *)name, th);
if (rc != 0)
GOTO(unlock2, rc);
LASSERT(!dt_object_remote(obj));
LASSERT(S_ISDIR(lfsck_object_type(obj)));
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 1);
+
rc = linkea_links_new(&ldata, &info->lti_big_buf, cname, pfid);
if (rc != 0)
GOTO(log, rc);
if (unlikely(lfsck_is_dead_obj(obj)))
GOTO(unlock, rc = 0);
- if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
- GOTO(unlock, rc = 1);
-
/* The old ".." name entry maybe not exist. */
dt_delete(env, obj, (const struct dt_key *)dotdot, th);
LASSERT(!dt_object_remote(obj));
+ if (ns->ln_flags & LF_INCOMPLETE)
+ GOTO(log, rc = 0);
+
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 1);
+
rc = lfsck_ibits_lock(env, lfsck, obj, &lh,
MDS_INODELOCK_UPDATE, LCK_PW);
if (rc != 0)
* object with another name, so we cannot know whether this linkEA
* is valid or not. So keep it there and maybe resolved when next
* LFSCK run. */
- if (ns->ln_flags & LF_INCOMPLETE)
- GOTO(unlock, rc = 0);
-
rc = dt_attr_get(env, obj, la);
if (rc != 0)
GOTO(unlock, rc = (rc == -ENOENT ? 0 : rc));
GOTO(unlock, rc = 0);
la->la_nlink = ldata.ld_leh->leh_reccount;
- if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
- GOTO(unlock, rc = 1);
rc = dt_attr_set(env, obj, la, th);
LASSERT(!dt_object_remote(obj));
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 1);
+
rc = lfsck_ibits_lock(env, lfsck, obj, &lh,
MDS_INODELOCK_UPDATE, LCK_PW);
if (rc != 0)
GOTO(unlock, rc = 0);
ldata->ld_leh->leh_overflow_time = 0;
- if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
- GOTO(unlock, rc = 1);
-
lfsck_buf_init(&linkea_buf, ldata->ld_buf->lb_buf,
ldata->ld_leh->leh_len);
rc = dt_xattr_set(env, obj, &linkea_buf, XATTR_NAME_LINK, 0, th);
GOTO(out, rc = -ENOENT);
}
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(out, rc = 1);
+
LASSERT(!dt_object_remote(child));
idx = lfsck_sub_trace_file_fid2idx(&ent->lde_fid);
if (!S_ISDIR(lfsck_object_type(obj)))
RETURN(-ENOTDIR);
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ RETURN(0);
+
rc = lfsck_links_read_with_rec(env, obj, &ldata);
if (rc == -ENODATA) {
dirty = true;
bool exists = true;
ENTRY;
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ RETURN(0);
+
rc = lfsck_lock(env, lfsck, dir, name, llh,
MDS_INODELOCK_UPDATE, LCK_PW);
if (rc != 0)
int rc = 0;
ENTRY;
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(log, rc = 0);
+
th = lfsck_trans_create(env, dev, lfsck);
if (IS_ERR(th))
GOTO(log, rc = PTR_ERR(th));
if (unlikely(lfsck_is_dead_obj(obj)))
GOTO(unlock, rc = 1);
- if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
- GOTO(unlock, rc = 0);
-
if (del_lmv) {
rc = dt_xattr_del(env, obj, XATTR_NAME_LMV, th);
if (rc != 0)
LASSERT(lmv4 != lmv);
+ if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
+ GOTO(out, rc = 0);
+
lfsck_lmv_header_cpu_to_le(lmv4, lmv);
lfsck_buf_init(buf, lmv4, sizeof(*lmv4));
if (unlikely(lfsck_is_dead_obj(obj)))
GOTO(unlock, rc = 1);
- if (lfsck->li_bookmark_ram.lb_param & LPF_DRYRUN)
- GOTO(unlock, rc = 0);
-
rc = dt_xattr_set(env, obj, buf, XATTR_NAME_LMV, 0, th);
GOTO(unlock, rc);
log:
lfsck_ibits_unlock(&lh, LCK_EX);
+
+out:
CDEBUG(D_LFSCK, "%s: namespace LFSCK updated the %s LMV EA "
"for the object "DFID": rc = %d\n",
lfsck_lfsck2name(lfsck),