No description
Find a file
Richard W.M. Jones 73ba05d936 block/raw-posix: Open file descriptor O_RDWR to work around glibc posix_fallocate emulation issue.
https://bugzilla.redhat.com/show_bug.cgi?id=1265196

The following command fails on an NFS mountpoint:

  $ qemu-img create -f qcow2 -o preallocation=falloc disk.img 262144
  Formatting 'disk.img', fmt=qcow2 size=262144 encryption=off cluster_size=65536 preallocation='falloc' lazy_refcounts=off
  qemu-img: disk.img: Could not preallocate data for the new file: Bad file descriptor

The reason turns out to be because NFS doesn't support the
posix_fallocate call.  glibc emulates it instead.  However glibc's
emulation involves using the pread(2) syscall.  The pread syscall
fails with EBADF if the file descriptor is opened without the read
open-flag (ie. open (..., O_WRONLY)).

I contacted glibc upstream about this, and their response is here:

  https://bugzilla.redhat.com/show_bug.cgi?id=1265196#c9

There are two possible fixes: Use Linux fallocate directly, or (this
fix) work around the problem in qemu by opening the file with O_RDWR
instead of O_WRONLY.

Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1265196
Reviewed-by: Jeff Cody <jcody@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2015-10-02 13:48:29 +02:00
audio
backends
block block/raw-posix: Open file descriptor O_RDWR to work around glibc posix_fallocate emulation issue. 2015-10-02 13:48:29 +02:00
bsd-user
crypto
default-configs
disas disas/cris: Fix typo in comment 2015-10-01 17:24:02 -07:00
docs * First batch of MAINTAINERS updates 2015-09-25 21:52:30 +01:00
dtc@65cc4d2748
fpu
fsdev
gdb-xml
hw * First batch of MAINTAINERS updates 2015-09-25 21:52:30 +01:00
include cpu: Provide vcpu throttling interface 2015-09-30 09:42:04 +02:00
libdecnumber
linux-headers vhost: rename VHOST_RESET_OWNER to VHOST_RESET_DEVICE 2015-09-24 16:27:52 +03:00
linux-user ppc: Rename ELF_MACHINE to be PPC specific 2015-09-25 12:04:44 +02:00
migration migration: Disambiguate MAX_THROTTLE 2015-09-30 09:42:04 +02:00
net Remove muldiv64() by using period instead of frequency 2015-09-25 18:03:19 +01:00
pc-bios
pixman@87eea99e44
po
qapi utils: rename strtosz to use qemu prefix 2015-09-25 12:04:41 +02:00
qga
qobject
qom
roms
scripts get_maintainer.pl: \C is deprecated 2015-09-25 12:04:41 +02:00
slirp slirp: Fix non blocking connect for w32 2015-09-24 20:52:28 +02:00
stubs
target-alpha alpha: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:44 +02:00
target-arm * First batch of MAINTAINERS updates 2015-09-25 21:52:30 +01:00
target-cris cris: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:43 +02:00
target-i386 i386: interrupt poll processing 2015-09-25 12:04:44 +02:00
target-lm32 lm32: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:43 +02:00
target-m68k m68k: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:43 +02:00
target-microblaze target-microblaze: Set the PC in reset instead of realize 2015-10-01 17:55:36 -07:00
target-mips mips: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:44 +02:00
target-moxie moxie: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:43 +02:00
target-openrisc or32: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:44 +02:00
target-ppc ppc: Rename ELF_MACHINE to be PPC specific 2015-09-25 12:04:44 +02:00
target-s390x s390: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:44 +02:00
target-sh4 sh4: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:44 +02:00
target-sparc sparc: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:44 +02:00
target-tilegx
target-tricore tricore: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:44 +02:00
target-unicore32 unicore: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:43 +02:00
target-xtensa xtensa: Remove ELF_MACHINE from cpu.h 2015-09-25 12:04:44 +02:00
tcg
tests iotests: Fix test 128 for password-less sudo 2015-10-02 13:48:29 +02:00
trace
ui ui/cocoa.m: remove open dialog code 2015-09-25 23:14:00 +01:00
util utils: rename strtosz to use qemu prefix 2015-09-25 12:04:41 +02:00
.exrc
.gitignore
.gitmodules
.mailmap
.travis.yml
accel.c
aio-posix.c
aio-win32.c
arch_init.c
async.c
balloon.c
block.c block: disable I/O limits at the beginning of bdrv_close() 2015-10-02 13:48:29 +02:00
blockdev-nbd.c
blockdev.c
blockjob.c
bootdevice.c
bt-host.c
bt-vhci.c
Changelog
CODING_STYLE
configure oslib-win32: only provide localtime_r/gmtime_r if missing 2015-09-24 21:13:49 +02:00
COPYING
COPYING.LIB
coroutine-gthread.c
coroutine-sigaltstack.c
coroutine-ucontext.c
coroutine-win32.c
cpu-exec-common.c
cpu-exec.c i386: partial revert of interrupt poll fix 2015-09-25 12:04:44 +02:00
cpus.c cpu: Provide vcpu throttling interface 2015-09-30 09:42:04 +02:00
cputlb.c
device-hotplug.c
device_tree.c
disas.c monitor: make monitor_fprintf and mon_get_cpu externally visible 2015-09-25 12:04:42 +02:00
dma-helpers.c
dump.c
exec.c
gdbstub.c
HACKING
hmp-commands-info.hx hmp: added io apic dump state 2015-09-25 12:04:42 +02:00
hmp-commands.hx
hmp.c qmp/hmp: Add throttle ratio to query-migrate and info migrate 2015-09-30 09:42:04 +02:00
hmp.h
iohandler.c
ioport.c
iothread.c
kvm-all.c
kvm-stub.c
LICENSE
main-loop.c
MAINTAINERS * First batch of MAINTAINERS updates 2015-09-25 21:52:30 +01:00
Makefile Makefile: fix build when VPATH is outside GIT tree 2015-09-25 12:04:41 +02:00
Makefile.objs
Makefile.target
memory.c
memory_mapping.c
module-common.c
monitor.c monitor: make monitor_fprintf and mon_get_cpu externally visible 2015-09-25 12:04:42 +02:00
nbd.c
numa.c
os-posix.c
os-win32.c
page_cache.c
qapi-schema.json qmp/hmp: Add throttle ratio to query-migrate and info migrate 2015-09-30 09:42:04 +02:00
qdev-monitor.c
qdict-test-data.txt
qemu-bridge-helper.c
qemu-char.c
qemu-coroutine-io.c
qemu-coroutine-lock.c
qemu-coroutine-sleep.c
qemu-coroutine.c
qemu-doc.texi
qemu-ga.texi
qemu-img-cmds.hx
qemu-img.c utils: rename strtosz to use qemu prefix 2015-09-25 12:04:41 +02:00
qemu-img.texi
qemu-io-cmds.c utils: rename strtosz to use qemu prefix 2015-09-25 12:04:41 +02:00
qemu-io.c
qemu-log.c
qemu-nbd.c qemu-nbd: convert to use the QAPI SocketAddress object 2015-09-25 12:04:40 +02:00
qemu-nbd.texi
qemu-options-wrapper.h
qemu-options.h
qemu-options.hx vhost-user: add multiple queue support 2015-09-24 16:27:53 +03:00
qemu-seccomp.c
qemu-tech.texi doc: Refresh URLs in the qemu-tech documentation 2015-09-25 12:20:21 +02:00
qemu-timer.c
qemu.nsi nsis: Add QEMU version information to Windows registry 2015-09-24 20:52:28 +02:00
qemu.sasl
qjson.c
qmp-commands.hx
qmp.c
qtest.c Init page sizes in qtest 2015-09-29 11:33:02 +05:30
README
rules.mak
softmmu_template.h
spice-qemu-char.c
tcg-runtime.c
tci.c
thread-pool.c
thunk.c
tpm.c
trace-events migration: size_t'ify some of qemu-file 2015-09-29 11:33:02 +05:30
translate-all.c
translate-all.h
translate-common.c
user-exec.c
VERSION
version.rc
vl.c migration: yet more possible state transitions 2015-09-30 09:42:04 +02:00
xen-common-stub.c
xen-common.c
xen-hvm-stub.c
xen-hvm.c
xen-mapcache.c

Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org

- QEMU team