]> git.proxmox.com Git - qemu.git/commit
block: correctly set the keep_read_only flag
authorJeff Cody <jcody@redhat.com>
Thu, 20 Sep 2012 19:13:17 +0000 (15:13 -0400)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Fri, 12 Oct 2012 02:44:20 +0000 (21:44 -0500)
commitd80210efbc96cc92c843eca6ab875665c6063a39
treecc900428c9d5105e002912ac552196ea980c17a4
parent513cdda198bac6c40e8847c8e8136ec974b67da7
block: correctly set the keep_read_only flag

I believe the bs->keep_read_only flag is supposed to reflect
the initial open state of the device. If the device is initially
opened R/O, then commit operations, or reopen operations changing
to R/W, are prohibited.

Currently, the keep_read_only flag is only accurate for the active
layer, and its backing file. Subsequent images end up always having
the keep_read_only flag set.

For instance, what happens now:

[  base  ]  kro = 1, ro = 1
    |
    v
[ snap-1 ]  kro = 1, ro = 1
    |
    v
[ snap-2 ]  kro = 0, ro = 1
    |
    v
[ active ]  kro = 0, ro = 0

What we want:

[  base  ]  kro = 0, ro = 1
    |
    v
[ snap-1 ]  kro = 0, ro = 1
    |
    v
[ snap-2 ]  kro = 0, ro = 1
    |
    v
[ active ]  kro = 0, ro = 0

Signed-off-by: Jeff Cody <jcody@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit be028adcedd68ca4d78fdc43e7e2fa4f1cdbc653)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
block.c
block.h