From: Jens Axboe Date: Thu, 23 Feb 2012 07:23:18 +0000 (+0100) Subject: Remove holes in verify_header structure X-Git-Tag: fio-2.0.4~5 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=d3a173a927084660c365d6aa162016ebb0746946;hp=e5b8f91cc6229a5f8b38f1338fad29c800fef179 Remove holes in verify_header structure Shrink the magic and verify_type members, and reorder so that it packs nicely. Incompatible change, write workloads must be re-run. Signed-off-by: Jens Axboe --- diff --git a/verify.c b/verify.c index f40d7e11..696aff76 100644 --- a/verify.c +++ b/verify.c @@ -692,18 +692,9 @@ int verify_io_u(struct thread_data *td, struct io_u *io_u) memswp(p, p + td->o.verify_offset, header_size); hdr = p; - if (hdr->fio_magic == FIO_HDR_MAGIC2) { - if (!verify_hdr_crc(hdr)) { - log_err("fio: bad crc on verify header.\n"); - return EILSEQ; - } - } else if (hdr->fio_magic == FIO_HDR_MAGIC) { - log_err("fio: v1 headers no longer supported.\n"); - log_err("fio: re-run the write workload.\n"); - return EILSEQ; - } else { + if (hdr->magic != FIO_HDR_MAGIC || !verify_hdr_crc(hdr)) { log_err("verify: bad magic header %x, wanted %x at file %s offset %llu, length %u\n", - hdr->fio_magic, FIO_HDR_MAGIC2, + hdr->magic, FIO_HDR_MAGIC, io_u->file->file_name, io_u->offset + hdr_num * hdr->len, hdr->len); return EILSEQ; @@ -860,12 +851,10 @@ static void populate_hdr(struct thread_data *td, struct io_u *io_u, p = (void *) hdr; - hdr->fio_magic = FIO_HDR_MAGIC2; - hdr->len = header_len; + hdr->magic = FIO_HDR_MAGIC; hdr->verify_type = td->o.verify; - hdr->pad1 = 0; + hdr->len = header_len; hdr->rand_seed = io_u->rand_seed; - hdr->pad2 = 0; hdr->crc32 = crc32c(p, sizeof(*hdr) - sizeof(hdr->crc32)); data_len = header_len - hdr_size(hdr); diff --git a/verify.h b/verify.h index ec7365c6..7c238c8d 100644 --- a/verify.h +++ b/verify.h @@ -3,8 +3,7 @@ #include -#define FIO_HDR_MAGIC 0xf00baaef -#define FIO_HDR_MAGIC2 0xf00dbeef +#define FIO_HDR_MAGIC 0xacca enum { VERIFY_NONE = 0, /* no verification */ @@ -29,12 +28,10 @@ enum { * data. */ struct verify_header { - uint32_t fio_magic; + uint16_t magic; + uint16_t verify_type; uint32_t len; - uint32_t verify_type; - uint32_t pad1; uint64_t rand_seed; - uint32_t pad2; uint32_t crc32; };