From 63f87de888df01e7ed93dc0afee0d0193e43a084 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 30 Nov 2017 06:50:36 -0700 Subject: [PATCH] io_u: tweak small content buffer scramble We currently generate a 'random' offset in a 512b chunk to fill in the offset. Since we don't want the later time scramble to overwrite it, we check and adjust for that. Instead just ensure that we generate a random offset in the first half of the 512b chunk, then we know we never overlap. Signed-off-by: Jens Axboe --- io_u.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/io_u.c b/io_u.c index 8087bd6a..c2585427 100644 --- a/io_u.c +++ b/io_u.c @@ -1687,15 +1687,15 @@ static void small_content_scramble(struct io_u *io_u) for (i = 0; i < nr_blocks; i++) { /* * Fill the byte offset into a "random" start offset of - * the buffer, given by the product of the usec time - * and the actual offset. + * the first half of the buffer. */ - offset = (io_u->start_time.tv_nsec ^ boffset) & 511; - offset &= ~(sizeof(uint64_t) - 1); - if (offset >= 512 - sizeof(uint64_t)) - offset -= sizeof(uint64_t); + offset = (io_u->start_time.tv_nsec ^ boffset) & 255; + offset &= ~(sizeof(boffset) - 1); memcpy(p + offset, &boffset, sizeof(boffset)); + /* + * Fill the start time into the end of the buffer + */ end = p + 512 - sizeof(io_u->start_time); memcpy(end, &io_u->start_time, sizeof(io_u->start_time)); p += 512; -- 2.25.1