From: Naphtali Sprei <nsprei@redhat.com>
To: Jamie Lokier <jamie@shareable.org>
Cc: kevin Wolf <kwolf@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 3/4] Block: readonly changes
Date: Thu, 04 Feb 2010 11:36:35 +0200 [thread overview]
Message-ID: <4B6A9523.7050806@redhat.com> (raw)
In-Reply-To: <20100203210653.GE19037@shareable.org>
Jamie Lokier wrote:
> Naphtali Sprei wrote:
>> Open backing file for read-only
>> During commit upgrade to read-write and back at end to read-only
>
>> + if (ro) { /* re-open as RO */
>> + bs_ro = bdrv_new("");
>> + ret = bdrv_open2(bs_ro, bs->backing_hd->filename, bs->backing_hd->open_flags & ~BDRV_O_RDWR, NULL);
>> + if (ret < 0) {
>> + bdrv_delete(bs_ro);
>> + return -EACCES;
>> + }
>> + bdrv_close(bs->backing_hd);
>> + qemu_free(bs->backing_hd);
>> + bs->backing_hd = bs_ro;
>> + bs->backing_hd->keep_read_only = 0;
>> + }
>
> I think the general idea is perfect.
>
> A couple of concerns come to mind.
>
> 1. When changing read-write to read-only, if the backing file is a complex
> format like qcow2 (or any others), is it possible for this bdrv_open2()
> to read metadata such as format indexes, and even data, _before_
> all changes maintained by bs->backing_hd have been written to the file?
>
> (If the complex formats were like real filesystems and had a "mounted"
> flags as real filesystems tend to, then it would be an issue, but I'm
> not aware of any of them doing that.)
>
> Are there any such issues when switching from read-only to read-write
> earlier? (It seems unlikely).
>
Good question. I looked at some of the formats (qcow, qcow2, vmdk) and didn't see
anything problematic, since in the close function I didn't see any changes to the real file,
only in-memory data and memory free.
But an answer from an expert would help.
> 2. Secondly, what if the re-open gets a different file (testable with
> fstat()). I know, you get what you deserve if you rename files, but
> still, do any of the formats which use backing files have a UUID check
> or something to confirm they are using the right backing file, which
> might be subverted by this?
I didn't see any such checking/validation.
It seems that handling such cases will complicate things more than you gain.
>
> 3. What about the bdrv file/device-locking which was actively looking
> like it might get in a couple of months ago. Did it get in, and if
> so does it conflict with this upgrade pattern?
AFAIK, the locks thread terminated, don't think anything committed.
But surely, there's a tight relationship between read-only/locks and sharing.
>
> Thanks!
> -- Jamie
Thanks,
Naphtali
next prev parent reply other threads:[~2010-02-04 9:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-03 18:32 [Qemu-devel] [PATCH 0/4] block: more read-only changes, related to backing files Naphtali Sprei
2010-02-03 18:32 ` [Qemu-devel] [PATCH 1/4] Add open_flags to BlockDriverState Will be used later Naphtali Sprei
2010-02-03 18:32 ` [Qemu-devel] [PATCH 2/4] qemu-img: Fix qemu-img can't create qcow image based on read-only image Naphtali Sprei
2010-02-03 18:32 ` [Qemu-devel] [PATCH 3/4] Block: readonly changes Naphtali Sprei
2010-02-03 18:32 ` [Qemu-devel] [PATCH 4/4] Open backing file read-only also for snapshot mode Naphtali Sprei
2010-02-03 21:06 ` [Qemu-devel] [PATCH 3/4] Block: readonly changes Jamie Lokier
2010-02-04 9:36 ` Naphtali Sprei [this message]
2010-02-04 10:44 ` Kevin Wolf
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=4B6A9523.7050806@redhat.com \
--to=nsprei@redhat.com \
--cc=jamie@shareable.org \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.