return 0;
}
-#define LFSCK_RBTREE_BITMAP_SIZE PAGE_CACHE_SIZE
+#define LFSCK_RBTREE_BITMAP_SIZE PAGE_SIZE
#define LFSCK_RBTREE_BITMAP_WIDTH (LFSCK_RBTREE_BITMAP_SIZE << 3)
#define LFSCK_RBTREE_BITMAP_MASK (LFSCK_RBTREE_BITMAP_WIDTH - 1)
log:
CDEBUG(D_LFSCK, "%s: layout LFSCK will create LAST_ID for <seq> "
- LPX64": rc = %d\n",
+ "%#llx: rc = %d\n",
lfsck_lfsck2name(lfsck), fid_seq(lfsck_dto2fid(obj)), rc);
return rc;
lo->ll_flags |= LF_CRASHED_LASTID;
CDEBUG(D_LFSCK, "%s: layout LFSCK finds crashed "
- "LAST_ID file (1) for the sequence "LPX64
- ", old value "LPU64", known value "LPU64"\n",
+ "LAST_ID file (1) for the sequence %#llx"
+ ", old value %llu, known value %llu\n",
lfsck_lfsck2name(lfsck), lls->lls_seq,
lastid, lls->lls_lastid);
}
continue;
CDEBUG(D_LFSCK, "%s: layout LFSCK will sync the LAST_ID for "
- "<seq> "LPX64" as <oid> "LPU64"\n",
+ "<seq> %#llx as <oid> %llu\n",
lfsck_lfsck2name(lfsck), lls->lls_seq, lls->lls_lastid);
if (bk->lb_param & LPF_DRYRUN) {
if (IS_ERR(th)) {
rc1 = PTR_ERR(th);
CDEBUG(D_LFSCK, "%s: layout LFSCK failed to store "
- "the LAST_ID for <seq> "LPX64"(1): rc = %d\n",
+ "the LAST_ID for <seq> %#llx(1): rc = %d\n",
lfsck_lfsck2name(com->lc_lfsck),
lls->lls_seq, rc1);
continue;
if (rc != 0) {
rc1 = rc;
CDEBUG(D_LFSCK, "%s: layout LFSCK failed to store "
- "the LAST_ID for <seq> "LPX64"(2): rc = %d\n",
+ "the LAST_ID for <seq> %#llx(2): rc = %d\n",
lfsck_lfsck2name(com->lc_lfsck),
lls->lls_seq, rc1);
}
lo->ll_flags |= LF_CRASHED_LASTID;
CDEBUG(D_LFSCK, "%s: layout LFSCK cannot find the "
- "LAST_ID file for sequence "LPX64"\n",
+ "LAST_ID file for sequence %#llx\n",
lfsck_lfsck2name(lfsck), lls->lls_seq);
if (OBD_FAIL_CHECK(OBD_FAIL_LFSCK_DELAY4) &&
lo->ll_flags |= LF_CRASHED_LASTID;
CDEBUG(D_LFSCK, "%s: layout LFSCK finds invalid "
- "LAST_ID file for the sequence "LPX64
+ "LAST_ID file for the sequence %#llx"
": rc = %d\n",
lfsck_lfsck2name(lfsck), lls->lls_seq, rc);
}
lo->ll_pos_first_inconsistent = cookie;
CDEBUG(D_LFSCK, "%s: layout LFSCK hit first non-repaired "
- "inconsistency at the pos ["LPU64"]\n",
+ "inconsistency at the pos [%llu]\n",
lfsck_lfsck2name(lfsck),
lo->ll_pos_first_inconsistent);
}
int rc = 0;
ENTRY;
+ while (CFS_FAIL_TIMEOUT(OBD_FAIL_LFSCK_DELAY3, cfs_fail_val)) {
+ if (unlikely(!thread_is_running(&com->lc_lfsck->li_thread)))
+ RETURN(0);
+ }
+
ostid_le_to_cpu(&slot->l_ost_oi, oi);
rc = ostid_to_fid(cfid2, oi, ost_idx2);
if (rc != 0)
up_write(&com->lc_sem);
CDEBUG(D_LFSCK, "%s: layout LFSCK master checkpoint at the pos ["
- LPU64"], status = %d: rc = %d\n", lfsck_lfsck2name(lfsck),
+ "%llu], status = %d: rc = %d\n", lfsck_lfsck2name(lfsck),
lfsck->li_pos_current.lp_oit_cookie, lo->ll_status, rc);
return rc;
up_write(&com->lc_sem);
CDEBUG(D_LFSCK, "%s: layout LFSCK slave checkpoint at the pos ["
- LPU64"], status = %d: rc = %d\n", lfsck_lfsck2name(lfsck),
+ "%llu], status = %d: rc = %d\n", lfsck_lfsck2name(lfsck),
lfsck->li_pos_current.lp_oit_cookie, lo->ll_status, rc);
return rc;
}
CDEBUG(D_LFSCK, "%s: layout LFSCK slave prep done, start pos ["
- LPU64"]\n", lfsck_lfsck2name(lfsck),
+ "%llu]\n", lfsck_lfsck2name(lfsck),
com->lc_pos_start.lp_oit_cookie);
return rc;
log:
CDEBUG(D_LFSCK, "%s: layout LFSCK master prep done, start pos ["
- LPU64"]\n", lfsck_lfsck2name(com->lc_lfsck),
+ "%llu]\n", lfsck_lfsck2name(com->lc_lfsck),
com->lc_pos_start.lp_oit_cookie);
return 0;
rc = lfsck_layout_lastid_load(env, com, lls);
if (rc != 0) {
CDEBUG(D_LFSCK, "%s: layout LFSCK failed to "
- "load LAST_ID for "LPX64": rc = %d\n",
+ "load LAST_ID for %#llx: rc = %d\n",
lfsck_lfsck2name(com->lc_lfsck), seq, rc);
lo->ll_objs_failed_phase1++;
OBD_FREE_PTR(lls);
rc = lfsck_layout_lastid_reload(env, com, lls);
if (unlikely(rc != 0)) {
CDEBUG(D_LFSCK, "%s: layout LFSCK failed to "
- "reload LAST_ID for "LPX64": rc = %d\n",
+ "reload LAST_ID for %#llx: rc = %d\n",
lfsck_lfsck2name(com->lc_lfsck),
lls->lls_seq, rc);
lo->ll_flags |= LF_CRASHED_LASTID;
CDEBUG(D_LFSCK, "%s: layout LFSCK finds crashed "
- "LAST_ID file (2) for the sequence "LPX64
- ", old value "LPU64", known value "LPU64"\n",
+ "LAST_ID file (2) for the sequence %#llx"
+ ", old value %llu, known value %llu\n",
lfsck_lfsck2name(lfsck), lls->lls_seq,
lls->lls_lastid, oid);
}
return rc;
}
-static int lfsck_layout_dump(const struct lu_env *env,
- struct lfsck_component *com, struct seq_file *m)
+static void lfsck_layout_dump(const struct lu_env *env,
+ struct lfsck_component *com, struct seq_file *m)
{
struct lfsck_instance *lfsck = com->lc_lfsck;
struct lfsck_bookmark *bk = &lfsck->li_bookmark_ram;
struct lfsck_layout *lo = com->lc_file_ram;
- int rc;
down_read(&com->lc_sem);
seq_printf(m, "name: lfsck_layout\n"
- "magic: %#x\n"
- "version: %d\n"
- "status: %s\n",
- lo->ll_magic,
- bk->lb_version,
- lfsck_status2name(lo->ll_status));
-
- rc = lfsck_bits_dump(m, lo->ll_flags, lfsck_flags_names, "flags");
- if (rc < 0)
- goto out;
+ "magic: %#x\n"
+ "version: %d\n"
+ "status: %s\n",
+ lo->ll_magic,
+ bk->lb_version,
+ lfsck_status2name(lo->ll_status));
- rc = lfsck_bits_dump(m, bk->lb_param, lfsck_param_names, "param");
- if (rc < 0)
- goto out;
+ lfsck_bits_dump(m, lo->ll_flags, lfsck_flags_names, "flags");
- rc = lfsck_time_dump(m, lo->ll_time_last_complete,
- "last_completed");
- if (rc < 0)
- goto out;
+ lfsck_bits_dump(m, bk->lb_param, lfsck_param_names, "param");
- rc = lfsck_time_dump(m, lo->ll_time_latest_start,
- "latest_start");
- if (rc < 0)
- goto out;
+ lfsck_time_dump(m, lo->ll_time_last_complete, "last_completed");
- rc = lfsck_time_dump(m, lo->ll_time_last_checkpoint,
- "last_checkpoint");
- if (rc < 0)
- goto out;
+ lfsck_time_dump(m, lo->ll_time_latest_start, "latest_start");
- seq_printf(m, "latest_start_position: "LPU64"\n"
- "last_checkpoint_position: "LPU64"\n"
- "first_failure_position: "LPU64"\n",
- lo->ll_pos_latest_start,
- lo->ll_pos_last_checkpoint,
- lo->ll_pos_first_inconsistent);
+ lfsck_time_dump(m, lo->ll_time_last_checkpoint, "last_checkpoint");
+
+ seq_printf(m, "latest_start_position: %llu\n"
+ "last_checkpoint_position: %llu\n"
+ "first_failure_position: %llu\n",
+ lo->ll_pos_latest_start,
+ lo->ll_pos_last_checkpoint,
+ lo->ll_pos_first_inconsistent);
seq_printf(m, "success_count: %u\n"
- "repaired_dangling: "LPU64"\n"
- "repaired_unmatched_pair: "LPU64"\n"
- "repaired_multiple_referenced: "LPU64"\n"
- "repaired_orphan: "LPU64"\n"
- "repaired_inconsistent_owner: "LPU64"\n"
- "repaired_others: "LPU64"\n"
- "skipped: "LPU64"\n"
- "failed_phase1: "LPU64"\n"
- "failed_phase2: "LPU64"\n",
- lo->ll_success_count,
- lo->ll_objs_repaired[LLIT_DANGLING - 1],
- lo->ll_objs_repaired[LLIT_UNMATCHED_PAIR - 1],
- lo->ll_objs_repaired[LLIT_MULTIPLE_REFERENCED - 1],
- lo->ll_objs_repaired[LLIT_ORPHAN - 1],
- lo->ll_objs_repaired[LLIT_INCONSISTENT_OWNER - 1],
- lo->ll_objs_repaired[LLIT_OTHERS - 1],
- lo->ll_objs_skipped,
- lo->ll_objs_failed_phase1,
- lo->ll_objs_failed_phase2);
+ "repaired_dangling: %llu\n"
+ "repaired_unmatched_pair: %llu\n"
+ "repaired_multiple_referenced: %llu\n"
+ "repaired_orphan: %llu\n"
+ "repaired_inconsistent_owner: %llu\n"
+ "repaired_others: %llu\n"
+ "skipped: %llu\n"
+ "failed_phase1: %llu\n"
+ "failed_phase2: %llu\n",
+ lo->ll_success_count,
+ lo->ll_objs_repaired[LLIT_DANGLING - 1],
+ lo->ll_objs_repaired[LLIT_UNMATCHED_PAIR - 1],
+ lo->ll_objs_repaired[LLIT_MULTIPLE_REFERENCED - 1],
+ lo->ll_objs_repaired[LLIT_ORPHAN - 1],
+ lo->ll_objs_repaired[LLIT_INCONSISTENT_OWNER - 1],
+ lo->ll_objs_repaired[LLIT_OTHERS - 1],
+ lo->ll_objs_skipped,
+ lo->ll_objs_failed_phase1,
+ lo->ll_objs_failed_phase2);
if (lo->ll_status == LS_SCANNING_PHASE1) {
__u64 pos;
do_div(new_checked, duration);
if (rtime != 0)
do_div(speed, rtime);
- seq_printf(m, "checked_phase1: "LPU64"\n"
- "checked_phase2: "LPU64"\n"
- "run_time_phase1: %u seconds\n"
- "run_time_phase2: %u seconds\n"
- "average_speed_phase1: "LPU64" items/sec\n"
- "average_speed_phase2: N/A\n"
- "real-time_speed_phase1: "LPU64" items/sec\n"
- "real-time_speed_phase2: N/A\n",
- checked,
- lo->ll_objs_checked_phase2,
- rtime,
- lo->ll_run_time_phase2,
- speed,
- new_checked);
+ seq_printf(m, "checked_phase1: %llu\n"
+ "checked_phase2: %llu\n"
+ "run_time_phase1: %u seconds\n"
+ "run_time_phase2: %u seconds\n"
+ "average_speed_phase1: %llu items/sec\n"
+ "average_speed_phase2: N/A\n"
+ "real-time_speed_phase1: %llu items/sec\n"
+ "real-time_speed_phase2: N/A\n",
+ checked,
+ lo->ll_objs_checked_phase2,
+ rtime,
+ lo->ll_run_time_phase2,
+ speed,
+ new_checked);
LASSERT(lfsck->li_di_oit != NULL);
pos = iops->store(env, lfsck->li_di_oit);
if (!lfsck->li_current_oit_processed)
pos--;
- seq_printf(m, "current_position: "LPU64"\n", pos);
+ seq_printf(m, "current_position: %llu\n", pos);
} else if (lo->ll_status == LS_SCANNING_PHASE2) {
cfs_duration_t duration = cfs_time_current() -
do_div(speed1, lo->ll_run_time_phase1);
if (rtime != 0)
do_div(speed2, rtime);
- rc = seq_printf(m, "checked_phase1: "LPU64"\n"
- "checked_phase2: "LPU64"\n"
- "run_time_phase1: %u seconds\n"
- "run_time_phase2: %u seconds\n"
- "average_speed_phase1: "LPU64" items/sec\n"
- "average_speed_phase2: "LPU64" items/sec\n"
- "real-time_speed_phase1: N/A\n"
- "real-time_speed_phase2: "LPU64" items/sec\n"
- "current_position: "DFID"\n",
- lo->ll_objs_checked_phase1,
- checked,
- lo->ll_run_time_phase1,
- rtime,
- speed1,
- speed2,
- new_checked,
- PFID(&com->lc_fid_latest_scanned_phase2));
- if (rc <= 0)
- goto out;
-
+ seq_printf(m, "checked_phase1: %llu\n"
+ "checked_phase2: %llu\n"
+ "run_time_phase1: %u seconds\n"
+ "run_time_phase2: %u seconds\n"
+ "average_speed_phase1: %llu items/sec\n"
+ "average_speed_phase2: %llu items/sec\n"
+ "real-time_speed_phase1: N/A\n"
+ "real-time_speed_phase2: %llu items/sec\n"
+ "current_position: "DFID"\n",
+ lo->ll_objs_checked_phase1,
+ checked,
+ lo->ll_run_time_phase1,
+ rtime,
+ speed1,
+ speed2,
+ new_checked,
+ PFID(&com->lc_fid_latest_scanned_phase2));
} else {
__u64 speed1 = lo->ll_objs_checked_phase1;
__u64 speed2 = lo->ll_objs_checked_phase2;
do_div(speed1, lo->ll_run_time_phase1);
if (lo->ll_run_time_phase2 != 0)
do_div(speed2, lo->ll_run_time_phase2);
- seq_printf(m, "checked_phase1: "LPU64"\n"
- "checked_phase2: "LPU64"\n"
+ seq_printf(m, "checked_phase1: %llu\n"
+ "checked_phase2: %llu\n"
"run_time_phase1: %u seconds\n"
"run_time_phase2: %u seconds\n"
- "average_speed_phase1: "LPU64" items/sec\n"
- "average_speed_phase2: "LPU64" objs/sec\n"
+ "average_speed_phase1: %llu items/sec\n"
+ "average_speed_phase2: %llu objs/sec\n"
"real-time_speed_phase1: N/A\n"
"real-time_speed_phase2: N/A\n"
"current_position: N/A\n",
speed1,
speed2);
}
-out:
- up_read(&com->lc_sem);
- return rc;
+ up_read(&com->lc_sem);
}
static int lfsck_layout_master_double_scan(const struct lu_env *env,
struct lfsck_assistant_data *lad = com->lc_data;
struct lfsck_layout_req *llr;
+ if (((struct lfsck_layout *)(com->lc_file_ram))->ll_status !=
+ LS_SCANNING_PHASE1)
+ return;
+
if (list_empty(&lad->lad_req_list))
return;
LASSERT(llst != NULL);
if (hash != llst->llst_hash) {
- CDEBUG(D_LFSCK, "%s: the given hash "LPU64" for orphan "
+ CDEBUG(D_LFSCK, "%s: the given hash %llu for orphan "
"iteration does not match the one when fini "
- LPU64", to be reset.\n",
+ "%llu, to be reset.\n",
lfsck_lfsck2name(it->loi_com->lc_lfsck), hash,
llst->llst_hash);
fid_zero(&llst->llst_fid);