It is found that the lfsck_find_mdt_idx_by_fid() will return
failure for "ROOT" object. That is incorrect. In fact "ROOT"
is always on the MDT0.
Test-Paramenters: trivial testlist=sanity-scrub,sanity-lfsck
Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: I4a1b796ffc574f8f11611d1b329ce79ad2135eb7
Reviewed-on: http://review.whamcloud.com/20869
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
struct lu_seq_range *range = &lfsck_env_info(env)->lti_range;
int rc;
struct lu_seq_range *range = &lfsck_env_info(env)->lti_range;
int rc;
+ if (unlikely(fid_seq(fid) == FID_SEQ_LOCAL_FILE)) {
+ /* "ROOT" is always on the MDT0. */
+ if (lu_fid_eq(fid, &lfsck->li_global_root_fid))
+ return 0;
+
+ return lfsck_dev_idx(lfsck);
+ }
+
fld_range_set_mdt(range);
rc = fld_server_lookup(env, ss->ss_server_fld, fid_seq(fid), range);
if (rc == 0)
fld_range_set_mdt(range);
rc = fld_server_lookup(env, ss->ss_server_fld, fid_seq(fid), range);
if (rc == 0)
- if (count == 1 && S_ISREG(lfsck_object_type(obj)))
+ if (obj != NULL && count == 1 &&
+ S_ISREG(lfsck_object_type(obj)))
dt_attr_get(env, obj, la);
}
dt_attr_get(env, obj, la);
}
if (!(bk->lb_param & LPF_FAILOUT))
rc = 0;
} else {
if (!(bk->lb_param & LPF_FAILOUT))
rc = 0;
} else {
- if (log)
- CDEBUG(D_LFSCK, "%s: namespace LFSCK assistant "
- "repaired the entry: "DFID", parent "DFID
- ", name %.*s\n", lfsck_lfsck2name(lfsck),
- PFID(&lnr->lnr_fid), PFID(pfid),
- lnr->lnr_namelen, lnr->lnr_name);
-
if (repaired) {
ns->ln_items_repaired++;
if (repaired) {
ns->ln_items_repaired++;
+ if (log)
+ CDEBUG(D_LFSCK, "%s: namespace LFSCK assistant "
+ "repaired the entry: "DFID", parent "DFID
+ ", name %.*s\n", lfsck_lfsck2name(lfsck),
+ PFID(&lnr->lnr_fid), PFID(pfid),
+ lnr->lnr_namelen, lnr->lnr_name);
switch (type) {
case LNIT_DANGLING:
switch (type) {
case LNIT_DANGLING:
ns->ln_name_hash_repaired++;
/* Not count repeatedly. */
ns->ln_name_hash_repaired++;
/* Not count repeatedly. */
+ if (log)
+ CDEBUG(D_LFSCK, "%s: namespace LFSCK "
+ "assistant repaired the entry: "
+ DFID", parent "DFID
+ ", name %.*s\n",
+ lfsck_lfsck2name(lfsck),
+ PFID(&lnr->lnr_fid), PFID(pfid),
+ lnr->lnr_namelen, lnr->lnr_name);
+ }
if (bk->lb_param & LPF_DRYRUN &&
lfsck_pos_is_zero(&ns->ln_pos_first_inconsistent))
if (bk->lb_param & LPF_DRYRUN &&
lfsck_pos_is_zero(&ns->ln_pos_first_inconsistent))