qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] PATCH: Control over drive open modes for backing file


From: Anthony Liguori
Subject: Re: [Qemu-devel] PATCH: Control over drive open modes for backing file
Date: Thu, 31 Jul 2008 13:26:17 -0500
User-agent: Thunderbird 2.0.0.14 (X11/20080501)

Daniel P. Berrange wrote:
The current block driver code will attempt to open a file backing a drive
for read/write with O_RDWR first, and if that fails, fallback to opening
it readonly with O_RDONLY. So if you set file permissions to readonly on
the underlying drive backing store, QEMU will fallback to opening it read
only, and discard any writes.

I'm not sure I agree that this patch is really that useful to an actual user. I think we'll eventually need a read-only flag as paravirtual devices do support read-only block devices. Let's consider a scenario:

A user has multiple block devices including a secondary device that is read-only to the guest. With qcow2 and today's behavior, savevm will just work. With your patch, it will not work.

This is a scenario where just because the block device cannot be written to, we still would want to write to the metadata of the image.

So while I think it's valid to have a "read-only disk" exposed to the guest, I don't think the user should have anything to do with how we open the file.

Is there some specific circumstance you are trying to support?

Regards,

Anthony Liguori

Xen has a concept of a read-only disks in its configuration format, and
thus it would be desirable to have an explicit option to request that a
drive operate read-only, regardless of whether underlying file permissions
allow write access or not. We'd like to support this in libvirt too for
QEMU/KVM guests. Finally, in some cases it is desirable to see the failure
if the disk can't be opened read-write, rather than falling back to read
only mode - many guests will be more or less inoperable if their root filesystem is read-only so there's little point booting.

The current block.h file did already have flags defined

  #define BDRV_O_RDONLY      0x0000
  #define BDRV_O_RDWR        0x0002
  #define BDRV_O_ACCESS      0x0003

However the bdrv_open2() method was treating a 'flags' value of 0, as being
effectively  RDWR, and nearly all callers pass in 0 even when they expect
to get a writable file, so the O_RDONLY flag was useless as is.

So this patch does a couple of things:






reply via email to

[Prev in Thread] Current Thread [Next in Thread]