Whamcloud - gitweb
LU-4917 lfsck: dump layout lfsck correctly 84/9984/3
authorFan Yong <fan.yong@intel.com>
Sun, 23 Mar 2014 00:10:59 +0000 (08:10 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 18 Apr 2014 05:49:29 +0000 (05:49 +0000)
We used the phase1 statistics by wrong for the phase2 status.

Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: I61565c22218728f3e8507f8850a2ed7970146046
Reviewed-on: http://review.whamcloud.com/9984
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/lfsck/lfsck_layout.c

index de96726..c808808 100644 (file)
@@ -4891,7 +4891,8 @@ static int lfsck_layout_dump(const struct lu_env *env,
                const struct dt_it_ops *iops;
                cfs_duration_t duration = cfs_time_current() -
                                          lfsck->li_time_last_checkpoint;
-               __u64 checked = lo->ll_objs_checked_phase1 + com->lc_new_checked;
+               __u64 checked = lo->ll_objs_checked_phase1 +
+                               com->lc_new_checked;
                __u64 speed = checked;
                __u64 new_checked = com->lc_new_checked * HZ;
                __u32 rtime = lo->ll_run_time_phase1 +
@@ -4942,31 +4943,36 @@ static int lfsck_layout_dump(const struct lu_env *env,
        } else if (lo->ll_status == LS_SCANNING_PHASE2) {
                cfs_duration_t duration = cfs_time_current() -
                                          lfsck->li_time_last_checkpoint;
-               __u64 checked = lo->ll_objs_checked_phase1 + com->lc_new_checked;
-               __u64 speed = checked;
+               __u64 checked = lo->ll_objs_checked_phase2 +
+                               com->lc_new_checked;
+               __u64 speed1 = lo->ll_objs_checked_phase1;
+               __u64 speed2 = checked;
                __u64 new_checked = com->lc_new_checked * HZ;
-               __u32 rtime = lo->ll_run_time_phase1 +
+               __u32 rtime = lo->ll_run_time_phase2 +
                              cfs_duration_sec(duration + HALF_SEC);
 
                if (duration != 0)
                        do_div(new_checked, duration);
+               if (lo->ll_run_time_phase1 != 0)
+                       do_div(speed1, lo->ll_run_time_phase1);
                if (rtime != 0)
-                       do_div(speed, rtime);
+                       do_div(speed2, rtime);
                rc = snprintf(buf, len,
                              "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"
+                             "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_objs_checked_phase2,
+                             lo->ll_run_time_phase1,
                              rtime,
-                             lo->ll_run_time_phase2,
-                             speed,
+                             speed1,
+                             speed2,
                              new_checked,
                              PFID(&com->lc_fid_latest_scanned_phase2));
                if (rc <= 0)