struct lfsck_instance *lfsck = com->lc_lfsck;
struct lfsck_lmv *llmv = lfsck->li_lmv;
struct lfsck_namespace_req *lnr;
- __u32 size =
- sizeof(*lnr) + LFSCK_TMPBUF_LEN;
- bool wakeup = false;
+ struct lu_attr *la = &lfsck_env_info(env)->lti_la2;
+ __u32 size = sizeof(*lnr) + LFSCK_TMPBUF_LEN;
+ int rc;
+ bool wakeup = false;
ENTRY;
if (llmv == NULL)
RETURN_EXIT;
+ rc = dt_attr_get(env, lfsck->li_obj_dir, la);
+ if (rc)
+ RETURN_EXIT;
+
OBD_ALLOC(lnr, size);
if (lnr == NULL) {
ns->ln_striped_dirs_skipped++;
}
lso = lfsck_assistant_object_init(env, lfsck_dto2fid(lfsck->li_obj_dir),
- NULL, lfsck->li_pos_current.lp_oit_cookie, true);
+ la, lfsck->li_pos_current.lp_oit_cookie, true);
if (IS_ERR(lso)) {
OBD_FREE(lnr, size);
ns->ln_striped_dirs_skipped++;
const struct lu_fid *cfid = &lslr->lslr_fid;
const struct lu_name *cname;
struct linkea_data ldata = { NULL };
- int len;
int rc1 = 0;
bool repair_linkea = false;
bool repair_lmvea = false;
if (fid_is_zero(cfid))
continue;
- len = snprintf(info->lti_tmpbuf, sizeof(info->lti_tmpbuf),
- DFID":%u", PFID(cfid), i);
- cname = lfsck_name_get_const(env, info->lti_tmpbuf, len);
- memcpy(lnr->lnr_name, info->lti_tmpbuf, len);
-
+ lnr->lnr_fid = *cfid;
+ lnr->lnr_namelen = snprintf(lnr->lnr_name,
+ lnr->lnr_size - sizeof(*lnr),
+ DFID":%u", PFID(cfid), i);
+ cname = lfsck_name_get_const(env, lnr->lnr_name,
+ lnr->lnr_namelen);
obj = lfsck_object_find_bottom(env, lfsck, cfid);
if (IS_ERR(obj)) {
if (dir == NULL) {
result = DFT_NODE;
break;
default:
- LBUG();
- break;
- }
- return result;
+ LASSERTF(0, "invalid mode %o\n", mode);
+ result = 0; /* Just for satisfying compiler. */
+ break;
+ }
+ return result;
}
EXPORT_SYMBOL(dt_mode_to_dft);