projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only define str_sfr_cb() if FIO_HAVE_SYNC_FILE_RANGE is set
[fio.git]
/
verify.c
diff --git
a/verify.c
b/verify.c
index 193e171871928265dad467d6570800dc788cd669..c894b600525c5969d5ddefb1d9eafe51c6a7ece9 100644
(file)
--- a/
verify.c
+++ b/
verify.c
@@
-53,38
+53,21
@@
static void fill_pattern(struct thread_data *td, void *p, unsigned int len)
break;
case 1:
dprint(FD_VERIFY, "fill verify pattern b=0 len=%u\n", len);
break;
case 1:
dprint(FD_VERIFY, "fill verify pattern b=0 len=%u\n", len);
- memset(p, td->o.verify_pattern, len);
+ memset(p, td->o.verify_pattern
[0]
, len);
break;
break;
- case 2:
- case 3:
- case 4: {
- unsigned int pattern = td->o.verify_pattern;
- unsigned int i = 0;
- unsigned char c1, c2, c3, c4;
+ default: {
+ unsigned int i = 0, size = 0;
unsigned char *b = p;
dprint(FD_VERIFY, "fill verify pattern b=%d len=%u\n",
td->o.verify_pattern_bytes, len);
unsigned char *b = p;
dprint(FD_VERIFY, "fill verify pattern b=%d len=%u\n",
td->o.verify_pattern_bytes, len);
- c1 = pattern & 0xff;
- pattern >>= 8;
- c2 = pattern & 0xff;
- pattern >>= 8;
- c3 = pattern & 0xff;
- pattern >>= 8;
- c4 = pattern & 0xff;
-
while (i < len) {
while (i < len) {
- b[i++] = c1;
- if (i == len)
- break;
- b[i++] = c2;
- if (td->o.verify_pattern_bytes == 2 || i == len)
- continue;
- b[i++] = c3;
- if (td->o.verify_pattern_bytes == 3 || i == len)
- continue;
- b[i++] = c4;
+ size = td->o.verify_pattern_bytes;
+ if (size > (len - i))
+ size = len - i;
+ memcpy(b+i, td->o.verify_pattern, size);
+ i += size;
}
break;
}
}
break;
}
@@
-229,7
+212,7
@@
static int verify_io_u_sha256(struct verify_header *hdr, struct io_u *io_u,
{
void *p = io_u_verify_off(hdr, io_u, header_num);
struct vhdr_sha256 *vh = hdr_priv(hdr);
{
void *p = io_u_verify_off(hdr, io_u, header_num);
struct vhdr_sha256 *vh = hdr_priv(hdr);
- uint8_t sha256[
128
];
+ uint8_t sha256[
64
];
struct sha256_ctx sha256_ctx = {
.buf = sha256,
};
struct sha256_ctx sha256_ctx = {
.buf = sha256,
};
@@
-420,24
+403,18
@@
static unsigned int hweight8(unsigned int w)
return (res + (res >> 4)) & 0x0F;
}
return (res + (res >> 4)) & 0x0F;
}
-int verify_io_u_pattern(
unsigned long
pattern, unsigned long pattern_size,
+int verify_io_u_pattern(
char *
pattern, unsigned long pattern_size,
char *buf, unsigned int len, unsigned int mod)
{
unsigned int i;
char *buf, unsigned int len, unsigned int mod)
{
unsigned int i;
- char split_pattern[4];
-
- for (i = 0; i < 4; i++) {
- split_pattern[i] = pattern & 0xff;
- pattern >>= 8;
- }
for (i = 0; i < len; i++) {
for (i = 0; i < len; i++) {
- if (buf[i] !=
split_
pattern[mod]) {
+ if (buf[i] != pattern[mod]) {
unsigned int bits;
unsigned int bits;
- bits = hweight8(buf[i] ^
split_
pattern[mod]);
+ bits = hweight8(buf[i] ^ pattern[mod]);
log_err("fio: got pattern %x, wanted %x. Bad bits %d\n",
log_err("fio: got pattern %x, wanted %x. Bad bits %d\n",
- buf[i],
split_
pattern[mod], bits);
+ buf[i], pattern[mod], bits);
log_err("fio: bad pattern block offset %u\n", i);
return EILSEQ;
}
log_err("fio: bad pattern block offset %u\n", i);
return EILSEQ;
}
@@
-460,12
+437,17
@@
int verify_io_u_async(struct thread_data *td, struct io_u *io_u)
io_u->file = NULL;
pthread_mutex_lock(&td->io_u_lock);
io_u->file = NULL;
pthread_mutex_lock(&td->io_u_lock);
+
+ if (io_u->flags & IO_U_F_IN_CUR_DEPTH) {
+ td->cur_depth--;
+ io_u->flags &= ~IO_U_F_IN_CUR_DEPTH;
+ }
flist_del(&io_u->list);
flist_add_tail(&io_u->list, &td->verify_list);
flist_del(&io_u->list);
flist_add_tail(&io_u->list, &td->verify_list);
+ io_u->flags |= IO_U_F_FREE_DEF;
pthread_mutex_unlock(&td->io_u_lock);
pthread_cond_signal(&td->verify_cond);
pthread_mutex_unlock(&td->io_u_lock);
pthread_cond_signal(&td->verify_cond);
- io_u->flags |= IO_U_F_FREE_DEF;
return 0;
}
return 0;
}
@@
-496,7
+478,9
@@
int verify_io_u(struct thread_data *td, struct io_u *io_u)
hdr = p;
if (hdr->fio_magic != FIO_HDR_MAGIC) {
hdr = p;
if (hdr->fio_magic != FIO_HDR_MAGIC) {
- log_err("Bad verify header %x\n", hdr->fio_magic);
+ log_err("Bad verify header %x at %llu\n",
+ hdr->fio_magic,
+ io_u->offset + hdr_num * hdr->len);
return EILSEQ;
}
return EILSEQ;
}
@@
-504,10
+488,10
@@
int verify_io_u(struct thread_data *td, struct io_u *io_u)
dprint(FD_VERIFY, "pattern verify io_u %p, len %u\n",
io_u, hdr->len);
ret = verify_io_u_pattern(td->o.verify_pattern,
dprint(FD_VERIFY, "pattern verify io_u %p, len %u\n",
io_u, hdr->len);
ret = verify_io_u_pattern(td->o.verify_pattern,
-
td->o.verify_pattern_bytes,
-
p + hdr_size,
-
hdr_inc - hdr_size,
-
hdr_size % 4
);
+ td->o.verify_pattern_bytes,
+ p + hdr_size,
+ hdr_inc - hdr_size,
+
hdr_size % td->o.verify_pattern_bytes
);
/*
* Also verify the meta data, if applicable
*/
/*
* Also verify the meta data, if applicable
*/