The previous discussion thread can be found at http://lists.nongnu.org/archive/html/qemu-devel/2016-10/msg04668.html
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 the backend file is not empty and the option 'size' does not match the actual file size, QEMU will error out. If the backend file is empty, QEMU will extend to the size specified by the option 'size'. Patch 2 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. For an empty file, the option 'size' must be specified. Haozhong Zhang (2): exec.c: do not truncate non-empty memory backend file hostmem-file: allow option 'size' optional backends/hostmem-file.c | 10 ++++++---- exec.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 5 deletions(-) -- 2.10.1