From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43319) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1axXuK-0004lY-6s for qemu-devel@nongnu.org; Tue, 03 May 2016 06:50:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1axXu5-00085d-JN for qemu-devel@nongnu.org; Tue, 03 May 2016 06:50:18 -0400 References: <1461706338-20219-1-git-send-email-mreitz@redhat.com> <1461706338-20219-3-git-send-email-mreitz@redhat.com> <20160502153555.GH4882@noname.redhat.com> From: Max Reitz Message-ID: <57288238.4060302@redhat.com> Date: Tue, 3 May 2016 12:49:28 +0200 MIME-Version: 1.0 In-Reply-To: <20160502153555.GH4882@noname.redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="v01Gf8r43egGHkt0dXgvvRhdj70ms1oQV" Subject: Re: [Qemu-devel] [PATCH 02/19] block: Add BDS.backing_overridden List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org, Alberto Garcia , Eric Blake This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --v01Gf8r43egGHkt0dXgvvRhdj70ms1oQV Content-Type: multipart/mixed; boundary="ipNcnviBowXwSWkTaFs5jEmouUjpfqmxx" From: Max Reitz To: Kevin Wolf Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org, Alberto Garcia , Eric Blake Message-ID: <57288238.4060302@redhat.com> Subject: Re: [PATCH 02/19] block: Add BDS.backing_overridden References: <1461706338-20219-1-git-send-email-mreitz@redhat.com> <1461706338-20219-3-git-send-email-mreitz@redhat.com> <20160502153555.GH4882@noname.redhat.com> In-Reply-To: <20160502153555.GH4882@noname.redhat.com> --ipNcnviBowXwSWkTaFs5jEmouUjpfqmxx Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 02.05.2016 17:35, Kevin Wolf wrote: > Am 26.04.2016 um 23:32 hat Max Reitz geschrieben: >> If the backing file is overridden, this most probably does change the >> guest-visible data of a BDS. Therefore, we will need to consider this = in >> bdrv_refresh_filename(). >> >> Adding a new field to the BDS is not nice, but it is very simple and >> exactly keeps track of whether the backing file has been overridden. >> >> Signed-off-by: Max Reitz >=20 > What about live snapshots or block jobs that manipulate bs->backing? > They don't use bdrv_open_backing_file(), but bdrv_append() or > bdrv_replace_in_backing_chain() in order to assign a backing file, whic= h > may or may not be the same as in the image header. I'll take a look into each case, thanks. > Also, do we want to consider a backing file overridden when the user > specified it explicitly, but it matches the image header? For simplicity's sake, I would. I think we've realized before that trying to identify whether to file names point to the same image is rather difficult. Max >=20 > Kevin >=20 >> block.c | 2 ++ >> include/block/block_int.h | 1 + >> 2 files changed, 3 insertions(+) >> >> diff --git a/block.c b/block.c >> index e349e83..e178488 100644 >> --- a/block.c >> +++ b/block.c >> @@ -1299,6 +1299,7 @@ int bdrv_open_backing_file(BlockDriverState *bs,= QDict *parent_options, >> =20 >> reference =3D qdict_get_try_str(parent_options, bdref_key); >> if (reference || qdict_haskey(options, "file.filename")) { >> + bs->backing_overridden =3D true; >> backing_filename[0] =3D '\0'; >> } else if (bs->backing_file[0] =3D=3D '\0' && qdict_size(options)= =3D=3D 0) { >> QDECREF(options); >> @@ -1589,6 +1590,7 @@ static int bdrv_open_inherit(BlockDriverState **= pbs, const char *filename, >> backing =3D qdict_get_try_str(options, "backing"); >> if (backing && *backing =3D=3D '\0') { >> flags |=3D BDRV_O_NO_BACKING; >> + bs->backing_overridden =3D true; >> qdict_del(options, "backing"); >> } >> =20 >> diff --git a/include/block/block_int.h b/include/block/block_int.h >> index 10d8759..d73e9ce 100644 >> --- a/include/block/block_int.h >> +++ b/include/block/block_int.h >> @@ -409,6 +409,7 @@ struct BlockDriverState { >> char backing_file[PATH_MAX]; /* if non zero, the image is a diff = of >> this file image */ >> char backing_format[16]; /* if non-zero and backing_file exists *= / >> + bool backing_overridden; /* backing file has been specified by th= e user */ >> =20 >> QDict *full_open_options; >> char exact_filename[PATH_MAX]; >> --=20 >> 2.8.0 >> --ipNcnviBowXwSWkTaFs5jEmouUjpfqmxx-- --v01Gf8r43egGHkt0dXgvvRhdj70ms1oQV Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJXKII4AAoJEDuxQgLoOKytoGUIAIHkdV85ikDdTKkqr5Dl/2M1 gqHen86VKKA6BAwveLbCKp4YAnzyxDw2/CDXR1/Ss0OEQTtUPAAR25v1VdVOhaXK kJHpT+9ivRD8wJaIXblmF8d5sPqCDh4HvkCMktE+r/6dBtPmE0t79U7gAwe0Zaz7 1PPjewzP7G0QVVRru2TpS5Gvmx0Y/uSvGu5jRd7WVJoS6SXH7PigXxHjNtYYyQh9 1rvAZNXM9SiUeusgV+i2pkH3eyIbuU3DYD7puZICpHkgTeqB1vPvc05Q8QICjKWw fLWF9HU8v4VGvXSeJ83NbzZnslb0n5TnsSgWjwX//NNjfovkYLWbt0uOw9NFKms= =7y1b -----END PGP SIGNATURE----- --v01Gf8r43egGHkt0dXgvvRhdj70ms1oQV--