From: Elie De Brauwer <eliedebrauwer@gmail.com>
To: linux-mtd@lists.infradead.org
Cc: eliedebrauwer@gmail.com
Subject: [PATCH 2/4] integck.c: rework file_check_data to immediately dump the buffer containing the errors
Date: Fri, 1 Mar 2013 19:37:38 +0100 [thread overview]
Message-ID: <1362163060-5629-3-git-send-email-eliedebrauwer@gmail.com> (raw)
In-Reply-To: <1362163060-5629-1-git-send-email-eliedebrauwer@gmail.com>
Signed-off-by: Elie De Brauwer <eliedebrauwer@gmail.com>
---
tests/fs-tests/integrity/integck.c | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
index 2c6ffea..5ea3642 100644
--- a/tests/fs-tests/integrity/integck.c
+++ b/tests/fs-tests/integrity/integck.c
@@ -1502,7 +1502,8 @@ static void file_check_data(struct file_info *file, int fd,
{
size_t remains, block, i;
off_t r;
- char buf[IO_BUFFER_SIZE];
+ unsigned char read_buf[IO_BUFFER_SIZE];
+ unsigned char check_buf[IO_BUFFER_SIZE];
unsigned int seed = w->random_seed;
if (args.power_cut_mode && !file->clean)
@@ -1517,17 +1518,28 @@ static void file_check_data(struct file_info *file, int fd,
block = IO_BUFFER_SIZE;
else
block = remains;
- CHECK(read(fd, buf, block) == block);
- for (i = 0; i < block; ++i) {
- char c = (char)rand_r(&seed);
- if (buf[i] != c) {
- errmsg("file_check_data failed at %zu checking "
- "data at %llu size %zu", w->size - remains + i,
- (unsigned long long)w->offset, w->size);
- file_info_display(file);
- save_file(fd, file);
- }
- CHECK(buf[i] == c);
+ CHECK(read(fd, read_buf, block) == block);
+ for (i = 0; i < block; ++i)
+ check_buf[i] = (char)rand_r(&seed);
+
+ if (memcmp(check_buf, read_buf, block) != 0) {
+ errmsg("file_check_data failed, dumping "
+ "data at offset %llu size %zu",
+ (unsigned long long)w->offset, w->size);
+
+ fprintf (stderr, "Read data:\n");
+ for (r = 0; r < block; ++r)
+ fprintf(stderr, "%02x%c",
+ read_buf[r], ((r+1)%16)?' ':'\n');
+ fprintf(stderr, "\nExpected data:\n");
+ for (r = 0; r < block; ++r)
+ fprintf(stderr, "%02x%c",
+ check_buf[r], ((r+1)%16)?' ':'\n');
+ fprintf(stderr, " \n");
+
+ file_info_display(file);
+ save_file(fd, file);
+ CHECK(0);
}
remains -= block;
}
--
1.7.10.4
next prev parent reply other threads:[~2013-03-01 18:38 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-01 18:37 [PATCH 0/4] mtd-utils: integck improvements Elie De Brauwer
2013-03-01 18:37 ` [PATCH 1/4] integck.c: Only verify the operation after all datastructures have been updated Elie De Brauwer
2013-03-01 18:37 ` Elie De Brauwer [this message]
2013-03-01 18:37 ` [PATCH 3/4] integck.c: Fix buffer overflow in save_file, avoid possible failure to write buffers when the filename length is equal to max_name_len Elie De Brauwer
2013-03-01 18:37 ` [PATCH 4/4] Typo fixes: avaiable -> available and priortiry -> priority Elie De Brauwer
2013-03-11 8:49 ` [PATCH 0/4] mtd-utils: integck improvements Artem Bityutskiy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1362163060-5629-3-git-send-email-eliedebrauwer@gmail.com \
--to=eliedebrauwer@gmail.com \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox