summaryrefslogtreecommitdiffstats
path: root/common/ubiformat.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-01-10 14:18:51 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-01-11 08:31:25 +0100
commitd4adaf8c095eadd51528fefa486ff10c907386ed (patch)
tree4220664b32f2f110d476672a259566b25f89f0ee /common/ubiformat.c
parenta433e04e79a096dbbb660c3a50a8317ccc052316 (diff)
downloadbarebox-d4adaf8c095eadd51528fefa486ff10c907386ed.tar.gz
ubiformat: Lower message printing frequency
During scanning and formatting printing the messages on a serial line has significant overhead up to the point where it takes longer to print the messages than it takes to do the work. Lower the message printing frequency to improve performance. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common/ubiformat.c')
-rw-r--r--common/ubiformat.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/common/ubiformat.c b/common/ubiformat.c
index aaa1f5d..0f05f09 100644
--- a/common/ubiformat.c
+++ b/common/ubiformat.c
@@ -190,6 +190,7 @@ static int flash_image(struct ubiformat_args *args, struct mtd_info *mtd,
int fd, img_ebs, eb, written_ebs = 0, ret = -1, eb_cnt;
off_t st_size;
char *buf = NULL;
+ uint64_t lastprint = 0;
eb_cnt = mtd_num_pebs(mtd);
@@ -229,8 +230,12 @@ static int flash_image(struct ubiformat_args *args, struct mtd_info *mtd,
long long ec;
if (!args->quiet && !args->verbose) {
- printf("\rubiformat: flashing eraseblock %d -- %2u %% complete ",
- eb, (eb + 1) * 100 / eb_cnt);
+ if (is_timeout(lastprint, 300 * MSECOND) ||
+ eb == eb_cnt - 1) {
+ printf("\rubiformat: flashing eraseblock %d -- %2u %% complete ",
+ eb, (eb + 1) * 100 / eb_cnt);
+ lastprint = get_time_ns();
+ }
}
if (si->ec[eb] == EB_BAD)
@@ -325,6 +330,7 @@ static int format(struct ubiformat_args *args, struct mtd_info *mtd,
struct ubi_vtbl_record *vtbl;
int eb1 = -1, eb2 = -1;
long long ec1 = -1, ec2 = -1;
+ uint64_t lastprint = 0;
eb_cnt = mtd_num_pebs(mtd);
@@ -340,8 +346,12 @@ static int format(struct ubiformat_args *args, struct mtd_info *mtd,
long long ec;
if (!args->quiet && !args->verbose) {
- printf("\rubiformat: formatting eraseblock %d -- %2u %% complete ",
- eb, (eb + 1 - start_eb) * 100 / (eb_cnt - start_eb));
+ if (is_timeout(lastprint, 300 * MSECOND) ||
+ eb == eb_cnt - 1) {
+ printf("\rubiformat: formatting eraseblock %d -- %2u %% complete ",
+ eb, (eb + 1 - start_eb) * 100 / (eb_cnt - start_eb));
+ lastprint = get_time_ns();
+ }
}
if (si->ec[eb] == EB_BAD)