[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v5] qemu-io: add pattern file for w
From: |
Eric Blake |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v5] qemu-io: add pattern file for write command |
Date: |
Fri, 31 May 2019 10:13:52 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 5/31/19 2:46 AM, Denis Plotnikov wrote:
> The patch allows to provide a pattern file for write
> command. There was no similar ability before.
>
> Signed-off-by: Denis Plotnikov <address@hidden>
> ---
> v5:
> * file name initiated with null to make compilers happy
>
> +static void *qemu_io_alloc_from_file(BlockBackend *blk, size_t len,
> + char *file_name)
> +{
> + char *buf, *buf_pos;
> + FILE *f = fopen(file_name, "r");
> + int l;
> +
> + if (!f) {
> + printf("'%s': %s\n", file_name, strerror(errno));
> + return NULL;
> + }
> +
> + if (qemuio_misalign) {
> + len += MISALIGN_OFFSET;
> + }
> + buf = blk_blockalign(blk, len);
> + memset(buf, 0, len);
> +
> + buf_pos = buf;
> +
> + while (len > 0) {
> + l = fread(buf_pos, sizeof(char), len, f);
> +
> + if (feof(f)) {
> + rewind(f);
> + }
Why are we reading the file more than once? Once we've read it once,
it's more efficient to switch to a loop that memcpy()s the prefix into
the rest of the buffer, rather than to perform repeated I/O.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature