qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Haozhong Zhang <haozhong.zhang@intel.com>
To: qemu-devel@nongnu.org, Eduardo Habkost <ehabkost@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Peter Crosthwaite <crosthwaite.peter@gmail.com>,
	Richard Henderson <rth@twiddle.net>,
	Haozhong Zhang <haozhong.zhang@intel.com>
Subject: [Qemu-devel] [PATCH v2 0/3] Improve truncation behavior of memory-backend-file
Date: Thu, 27 Oct 2016 12:22:57 +0800	[thread overview]
Message-ID: <20161027042300.5929-1-haozhong.zhang@intel.com> (raw)

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().


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(-)

-- 
2.10.1

             reply	other threads:[~2016-10-27  4:23 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-27  4:22 Haozhong Zhang [this message]
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 ` [Qemu-devel] [PATCH v2 0/3] Improve truncation behavior of memory-backend-file Paolo Bonzini

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=20161027042300.5929-1-haozhong.zhang@intel.com \
    --to=haozhong.zhang@intel.com \
    --cc=crosthwaite.peter@gmail.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=pbonzini@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).