aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2010-05-23 13:08:27 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2010-05-23 13:08:27 -0800
commit91bc74252890f39c87e1209b520dea31cf392106 (patch)
tree4ba134e491ddab7a4681b4ae8a0d74ee29d90f5a
parent71b4a29224becf520f67825806d97be79d4b67b1 (diff)
downloadbcache-tools-91bc74252890f39c87e1209b520dea31cf392106.tar.gz
stats
-rw-r--r--bcache-test.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/bcache-test.c b/bcache-test.c
index bff82980..aa14fc89 100644
--- a/bcache-test.c
+++ b/bcache-test.c
@@ -89,6 +89,7 @@ long getblocks(int fd)
struct pagestuff {
unsigned char csum[16];
+ unsigned char oldcsum[16];
int readcount;
int writecount;
};
@@ -100,6 +101,7 @@ int main(int argc, char **argv)
unsigned long size, i, offset = 0, done = 0;
void *buf1 = NULL, *buf2 = NULL;
struct pagestuff *pages, *p;
+ unsigned char c[16];
RC4_KEY writedata;
RC4_set_key(&writedata, 16, bcache_magic);
@@ -181,13 +183,13 @@ int main(int argc, char **argv)
RC4(&writedata, 4096, zero, buf1 + j);
if (csum) {
- unsigned char c[16];
MD4(buf1 + j, 4096, &c[0]);
if (writing ||
- (!p->readcount && !p->writecount))
+ (!p->readcount && !p->writecount)) {
+ memcpy(&p->oldcsum[0], &p->csum[0], 16);
memcpy(&p->csum[0], c, 16);
- else if (memcmp(&p->csum[0], c, 16))
+ } else if (memcmp(&p->csum[0], c, 16))
goto bad;
} else if (!writing &&
memcmp(buf1 + j,
@@ -208,5 +210,9 @@ err:
bad:
printf("Bad read! loop %li offset %li sectors %i, sector %i, readcount %i writecount %i\n",
i, offset >> 9, nbytes >> 9, j >> 9, p->readcount, p->writecount);
+
+ if (!memcmp(&p->oldcsum[0], c, 16))
+ printf("Matches previous csum\n");
+
exit(EXIT_FAILURE);
}