From: Paolo Bonzini <pbonzini@redhat.com>
To: Haozhong Zhang <haozhong.zhang@intel.com>,
qemu-devel@nongnu.org, Eduardo Habkost <ehabkost@redhat.com>,
Igor Mammedov <imammedo@redhat.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v2 0/3] Improve truncation behavior of memory-backend-file
Date: Thu, 27 Oct 2016 14:03:53 +0200 [thread overview]
Message-ID: <dc094c30-291b-1553-f9a5-02a16cc40660@redhat.com> (raw)
In-Reply-To: <20161027042300.5929-1-haozhong.zhang@intel.com>
On 27/10/2016 06:22, Haozhong Zhang wrote:
> For a mmeory backend file, e.g.
> -object memory-backend-file,mem-path=foo,size=SZ,...
> the size of the backend file 'foo' is specified by the 'size'
> option. If the specified size 'SZ' does not match the actual size of
> file 'foo', QEMU will truncate the backend file 'foo'. In certain
> usage scenarios (e.g. vNVDIMM), the truncation may corrupt the
> existing data in the file.
>
> Patch 1 in this series avoids such data corruption by disabling
> truncating non-empty backend files. If a non-existing file, an empty
> file or a directory is specified by 'mem-path' option, QEMU will
> truncate the backend file to the size specified by 'size' option.
>
> Patch 2 adds an additional check to avoid creating a memory backend
> that can not be hold in the backend file. For a non-empty backend
> file, if its size is smaller than 'size' option, QEMU will report
> error.
>
> Patch 3 makes the option 'size' optional. It's to avoid the misusing
> of 'size' option. If the user is uncertain about the backend file
> size, they can skip the 'size' option and let QEMU use the actual file
> size. If a non-existing file, an empty file or a directory is
> specified by 'mem-path' option, the 'size' option is still needed.
>
> Changes since v1:
> * Fix errors in v1 patches.
> * Split truncation skip and size check into separate patches.
> * Do not error out for backend file whose size is unknown.
> * Only error out when file size is smaller than 'size' option.
> * Change the error handling path of file_backend_memory_alloc().
> * Do not duplicate the setting of block->used_length/max_length in
> file_ram_alloc().
Nice. I'm squashing this in for slightly better error messages.
Thanks,
Paolo
diff --git a/exec.c b/exec.c
index d9034b1..eea9c10 100644
--- a/exec.c
+++ b/exec.c
@@ -1267,6 +1267,13 @@ static void *file_ram_alloc(RAMBlock *block,
break;
}
} else if (errno == EISDIR) {
+ if (!mem_size) {
+ error_setg_errno(errp, errno,
+ "%s is a directory but no 'size' option was specified",
+ path);
+ goto error;
+ }
+
/* @path names a directory, create a file there */
/* Make name safe to use with mkstemp by replacing '/' with '_'. */
sanitized_name = g_strdup(memory_region_name(block->mr));
>
> Haozhong Zhang (3):
> exec.c: do not truncate non-empty memory backend file
> exec.c: check memory backend file size with 'size' option
> hostmem-file: make option 'size' optional
>
> backends/hostmem-file.c | 28 ++++++++++++++++++-------
> exec.c | 56 +++++++++++++++++++++++++++++++++++++++----------
> 2 files changed, 65 insertions(+), 19 deletions(-)
>
prev parent reply other threads:[~2016-10-27 12:04 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-27 4:22 [Qemu-devel] [PATCH v2 0/3] Improve truncation behavior of memory-backend-file Haozhong Zhang
2016-10-27 4:22 ` [Qemu-devel] [PATCH v2 1/3] exec.c: do not truncate non-empty memory backend file Haozhong Zhang
2016-10-27 14:31 ` Eduardo Habkost
2016-10-28 2:07 ` Haozhong Zhang
2016-10-31 17:21 ` Eduardo Habkost
2016-10-27 4:22 ` [Qemu-devel] [PATCH v2 2/3] exec.c: check memory backend file size with 'size' option Haozhong Zhang
2016-10-27 14:32 ` Eduardo Habkost
2016-10-31 17:23 ` Eduardo Habkost
2016-10-31 17:56 ` Paolo Bonzini
2016-11-02 1:05 ` [Qemu-devel] [RESEND PATCH " Haozhong Zhang
2016-10-27 4:23 ` [Qemu-devel] [PATCH v2 3/3] hostmem-file: make option 'size' optional Haozhong Zhang
2016-10-27 14:55 ` Eduardo Habkost
2016-10-28 2:06 ` Haozhong Zhang
2016-10-28 5:57 ` Haozhong Zhang
2016-10-31 18:18 ` Eduardo Habkost
2016-11-02 2:08 ` Haozhong Zhang
2016-10-27 12:03 ` Paolo Bonzini [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dc094c30-291b-1553-f9a5-02a16cc40660@redhat.com \
--to=pbonzini@redhat.com \
--cc=crosthwaite.peter@gmail.com \
--cc=ehabkost@redhat.com \
--cc=haozhong.zhang@intel.com \
--cc=imammedo@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).