add_drive: Don't use cache=off if not supported by underlying filesystem.
authorRichard W.M. Jones <rjones@redhat.com>
Wed, 12 Aug 2009 21:12:20 +0000 (22:12 +0100)
committerRichard Jones <rjones@trick.home.annexia.org>
Thu, 13 Aug 2009 10:03:02 +0000 (11:03 +0100)
commitd082a76d679b019784bc0b131028ee74e381f4a2
tree74a5e031b099169b8b215ebca188d715cbb7654e
parent67a679afb17747b5ec392e56cf6121b085b38a3a
add_drive: Don't use cache=off if not supported by underlying filesystem.

If you use the guestfs_add_drive function, then currently it
generates a qemu command line element like:

  -drive ...,cache=off,...

This causes qemu to try to open the device with O_DIRECT.
Unfortunately some filesystems don't support this flag, notably tmpfs,
which means you can't use libguestfs in conjunction with tmpfs.  On
some systems /tmp is a tmpfs filesystem.

This patch fixes this so that if the filesystem doesn't support
O_DIRECT, then we omit the cache=off parameter.  This seems reasonable
from a reliability point of view, because if you're using tmpfs then
you probably didn't expect reliability in the case where your system
suddenly powers off.
src/generator.ml
src/guestfs.c