#define DEBUG_SUBSYSTEM S_LFSCK
-#include <lustre/lustre_idl.h>
#include <lu_object.h>
#include <dt_object.h>
#include <md_object.h>
#include <lustre_lib.h>
#include <lustre_net.h>
#include <lustre_lmv.h>
-#include <lustre/lustre_user.h>
#include "lfsck_internal.h"
lfsck_lmv_put(env, llmv);
} else {
ns->ln_striped_dirs_repaired++;
+ llmv->ll_counted = 1;
spin_lock(&lfsck->li_lock);
list_add_tail(&llu->llu_link, &lfsck->li_list_lmv);
spin_unlock(&lfsck->li_lock);
RETURN(rc);
ns->ln_striped_dirs_scanned++;
- ns->ln_striped_dirs_repaired++;
+ if (!llmv->ll_counted)
+ ns->ln_striped_dirs_repaired++;
}
fld_range_set_mdt(range);
cname = lfsck_name_get_const(env, info->lti_tmpbuf, len);
memcpy(lnr->lnr_name, info->lti_tmpbuf, len);
- obj = lfsck_object_find_bottom_nowait(env, lfsck, cfid);
+ obj = lfsck_object_find_bottom(env, lfsck, cfid);
if (IS_ERR(obj)) {
if (dir == NULL) {
dir = lfsck_assistant_object_load(env, lfsck,
break;
}
- rc1 = lfsck_links_read(env, obj, &ldata);
+ rc1 = lfsck_links_read_with_rec(env, obj, &ldata);
if (rc1 == -ENOENT) {
create = true;
goto repair;
if (repair_linkea) {
struct lustre_handle lh = { 0 };
- rc1 = linkea_data_new(&ldata, &info->lti_big_buf);
+ rc1 = linkea_links_new(&ldata, &info->lti_big_buf,
+ cname, lfsck_dto2fid(dir));
if (rc1 != 0)
goto next;
}
}
- rc1 = linkea_add_buf(&ldata, cname, lfsck_dto2fid(dir));
- if (rc1 != 0)
- goto next;
-
rc1 = lfsck_ibits_lock(env, lfsck, obj, &lh,
MDS_INODELOCK_UPDATE |
MDS_INODELOCK_XATTR, LCK_EX);
dev = ltd->ltd_tgt;
}
- obj = lfsck_object_find_by_dev_nowait(env, dev, &lnr->lnr_fid);
+ obj = lfsck_object_find_by_dev(env, dev, &lnr->lnr_fid);
if (IS_ERR(obj)) {
if (lfsck_is_dead_obj(dir))
RETURN(0);