On Thu, Jan 16, 2014 at 10:39:30AM +0100, Kevin Wolf wrote: > Am 14.01.2014 um 20:12 hat Jeff Cody geschrieben: > > Having both read-only=on and snapshot=on together does not make sense; > > currently, the read-only argument is effectively ignored for the > > temporary snapshot. To prevent confusion, disallow the usage of both > > 'snapshot=on' and 'read-only=on'. > > > > Signed-off-by: Jeff Cody <jc...@redhat.com> > > I believe the reason why this was allowed was so that you can use a > read-only file with -snapshot. It might not be necessary any more since > I switched -snapshot implementation to modify the options QDict instead > of manually doing a second bdrv_open(). > > Did you test that this still works now? >
Yes, that still works. > The other question is about this code in bdrv_open_flags(): > > /* > * Snapshots should be writable. > */ > if (bs->is_temporary) { > open_flags |= BDRV_O_RDWR; > } > > Is this dead code now because the flag is always already set? > Yes, that ends up being dead code. From later in blockdev_init(): bdrv_flags |= ro ? 0 : BDRV_O_RDWR; QINCREF(bs_opts); ret = bdrv_open(dinfo->bdrv, file, bs_opts, bdrv_flags, drv, &error); And ro is set from the read-only QemuOpts, that we check in this patch in conjunction with snapshot. So if read-only=on is not specified, it is opened r/w by default.