From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IIrZr-0007RX-Ny for qemu-devel@nongnu.org; Wed, 08 Aug 2007 15:52:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IIrZr-0007R6-2J for qemu-devel@nongnu.org; Wed, 08 Aug 2007 15:52:19 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IIrZq-0007R2-HX for qemu-devel@nongnu.org; Wed, 08 Aug 2007 15:52:18 -0400 Received: from wa-out-1112.google.com ([209.85.146.178]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IIrZp-0005dg-QX for qemu-devel@nongnu.org; Wed, 08 Aug 2007 15:52:18 -0400 Received: by wa-out-1112.google.com with SMTP id k22so311216waf for ; Wed, 08 Aug 2007 12:52:14 -0700 (PDT) Message-ID: <59abf66e0708081252w38ed4425t38e9bdfcf4acedbf@mail.gmail.com> Date: Wed, 8 Aug 2007 16:52:14 -0300 From: "=?ISO-8859-1?Q?Jorge_Luc=E1ngeli_Obes?=" In-Reply-To: <59abf66e0708081123u64c67205n7723a6f01e0b29a9@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_131054_25267525.1186602734651" References: <59abf66e0708081123u64c67205n7723a6f01e0b29a9@mail.gmail.com> Subject: [Qemu-devel] [PATCH 3/4][RFC] Add qemu-img option to store command line options into qcow2 images Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_131054_25267525.1186602734651 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline This patch adds a new qemu-img option to store command line arguments in qcow2 snapshots. Signed-off-by: Laurent Vivier Signed-off-by: Jorge Luc=E1ngeli Obes --- diff --git a/qemu/qemu-img.c b/qemu/qemu-img.c index a259546..afa1fcc 100644 --- a/qemu/qemu-img.c +++ b/qemu/qemu-img.c @@ -98,6 +98,7 @@ void help(void) "QEMU disk image utility\n" "\n" "Command syntax:\n" + " cmdline filename \"command_line\" (qcow2 format only)\n" " create [-e] [-b base_image] [-f fmt] filename [size]\n" " commit [-f fmt] filename\n" " convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename\n" @@ -105,6 +106,8 @@ void help(void) "\n" "Command parameters:\n" " 'filename' is a disk image filename\n" + " 'command_line' is a list of command line options to be stored in the image,\n" + " an empty string clears the stored command line options\n" " 'base_image' is the read-only disk image which is used as base for a copy on\n" " write image; the copy on write image only stores the modified data\n" " 'fmt' is the disk image format. It is guessed automatically in most cases\n" @@ -317,6 +320,33 @@ static int img_create(int argc, char **argv) return 0; } +static int img_cmdline(int argc, char **argv) +{ + char *filename; + char *annotation; + + BlockDriverState *bs; + + char *aname =3D "commandline_args"; + + if (argc !=3D 4) + help(); + + filename =3D argv[2]; + annotation =3D argv[3]; + + bs =3D bdrv_new_open(filename, "qcow2"); + if (!bs) + error("Could not open qcow2 image '%s'", filename); + + if (bdrv_set_annot(bs, aname, (const char *)annotation) < 0) { + error("Could not store command line options into '%s'", filename); + } + + bdrv_delete(bs); + return 0; +} + static int img_commit(int argc, char **argv) { int c, ret; @@ -577,11 +607,19 @@ static void dump_snapshots(BlockDriverState *bs) nb_sns =3D bdrv_snapshot_list(bs, &sn_tab); if (nb_sns <=3D 0) return; - printf("Snapshot list:\n"); + + printf("\nAnnotations:\n"); + for (i =3D 0; i < nb_sns; i++) { + sn =3D &sn_tab[i]; + if (bdrv_snapshot_annotated(sn)) + printf("%s\n", bdrv_snapshot_dump(buf, sizeof(buf), sn)); + } + printf("\nSnapshot list:\n"); printf("%s\n", bdrv_snapshot_dump(buf, sizeof(buf), NULL)); for(i =3D 0; i < nb_sns; i++) { sn =3D &sn_tab[i]; - printf("%s\n", bdrv_snapshot_dump(buf, sizeof(buf), sn)); + if (!bdrv_snapshot_annotated(sn)) + printf("%s\n", bdrv_snapshot_dump(buf, sizeof(buf), sn)); } qemu_free(sn_tab); } @@ -673,7 +711,9 @@ int main(int argc, char **argv) help(); cmd =3D argv[1]; optind++; - if (!strcmp(cmd, "create")) { + if (!strcmp(cmd, "cmdline")) { + img_cmdline(argc, argv); + } else if (!strcmp(cmd, "create")) { img_create(argc, argv); } else if (!strcmp(cmd, "commit")) { img_commit(argc, argv); ------=_Part_131054_25267525.1186602734651 Content-Type: text/x-patch; name=qemu-img.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f545ffea Content-Disposition: attachment; filename="qemu-img.patch" VGhpcyBwYXRjaCBhZGRzIGEgbmV3IHFlbXUtaW1nIG9wdGlvbiB0byBzdG9yZQpjb21tYW5kIGxp bmUgYXJndW1lbnRzIGluIHFjb3cyIHNuYXBzaG90cy4KClNpZ25lZC1vZmYtYnk6IExhdXJlbnQg Vml2aWVyIDxMYXVyZW50LlZpdmllckBidWxsLm5ldD4KU2lnbmVkLW9mZi1ieTogSm9yZ2UgTHVj w6FuZ2VsaSBPYmVzIDx0NG01eW5AZ21haWwuY29tPgotLS0KZGlmZiAtLWdpdCBhL3FlbXUvcWVt dS1pbWcuYyBiL3FlbXUvcWVtdS1pbWcuYwppbmRleCBhMjU5NTQ2Li5hZmExZmNjIDEwMDY0NAot LS0gYS9xZW11L3FlbXUtaW1nLmMKKysrIGIvcWVtdS9xZW11LWltZy5jCkBAIC05OCw2ICs5OCw3 IEBAIHZvaWQgaGVscCh2b2lkKQogICAgICAgICAgICAiUUVNVSBkaXNrIGltYWdlIHV0aWxpdHlc biIKICAgICAgICAgICAgIlxuIgogICAgICAgICAgICAiQ29tbWFuZCBzeW50YXg6XG4iCisgICAg ICAgICAgICIgIGNtZGxpbmUgZmlsZW5hbWUgXCJjb21tYW5kX2xpbmVcIiAocWNvdzIgZm9ybWF0 IG9ubHkpXG4iCiAgICAgICAgICAgICIgIGNyZWF0ZSBbLWVdIFstYiBiYXNlX2ltYWdlXSBbLWYg Zm10XSBmaWxlbmFtZSBbc2l6ZV1cbiIKICAgICAgICAgICAgIiAgY29tbWl0IFstZiBmbXRdIGZp bGVuYW1lXG4iCiAgICAgICAgICAgICIgIGNvbnZlcnQgWy1jXSBbLWVdIFstZiBmbXRdIGZpbGVu YW1lIFstTyBvdXRwdXRfZm10XSBvdXRwdXRfZmlsZW5hbWVcbiIKQEAgLTEwNSw2ICsxMDYsOCBA QCB2b2lkIGhlbHAodm9pZCkKICAgICAgICAgICAgIlxuIgogICAgICAgICAgICAiQ29tbWFuZCBw YXJhbWV0ZXJzOlxuIgogICAgICAgICAgICAiICAnZmlsZW5hbWUnIGlzIGEgZGlzayBpbWFnZSBm aWxlbmFtZVxuIgorICAgICAgICAgICAiICAnY29tbWFuZF9saW5lJyBpcyBhIGxpc3Qgb2YgY29t bWFuZCBsaW5lIG9wdGlvbnMgdG8gYmUgc3RvcmVkIGluIHRoZSBpbWFnZSxcbiIKKyAgICAgICAg ICAgIiAgICBhbiBlbXB0eSBzdHJpbmcgY2xlYXJzIHRoZSBzdG9yZWQgY29tbWFuZCBsaW5lIG9w dGlvbnNcbiIKICAgICAgICAgICAgIiAgJ2Jhc2VfaW1hZ2UnIGlzIHRoZSByZWFkLW9ubHkgZGlz ayBpbWFnZSB3aGljaCBpcyB1c2VkIGFzIGJhc2UgZm9yIGEgY29weSBvblxuIgogICAgICAgICAg ICAiICAgIHdyaXRlIGltYWdlOyB0aGUgY29weSBvbiB3cml0ZSBpbWFnZSBvbmx5IHN0b3JlcyB0 aGUgbW9kaWZpZWQgZGF0YVxuIgogICAgICAgICAgICAiICAnZm10JyBpcyB0aGUgZGlzayBpbWFn ZSBmb3JtYXQuIEl0IGlzIGd1ZXNzZWQgYXV0b21hdGljYWxseSBpbiBtb3N0IGNhc2VzXG4iCkBA IC0zMTcsNiArMzIwLDMzIEBAIHN0YXRpYyBpbnQgaW1nX2NyZWF0ZShpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgaW1nX2NtZGxpbmUoaW50IGFy Z2MsIGNoYXIgKiphcmd2KQoreworICAgIGNoYXIgKmZpbGVuYW1lOworICAgIGNoYXIgKmFubm90 YXRpb247CisKKyAgICBCbG9ja0RyaXZlclN0YXRlICpiczsKKworICAgIGNoYXIgKmFuYW1lID0g ImNvbW1hbmRsaW5lX2FyZ3MiOworCisgICAgaWYgKGFyZ2MgIT0gNCkKKyAgICAgICAgaGVscCgp OworCisgICAgZmlsZW5hbWUgPSBhcmd2WzJdOworICAgIGFubm90YXRpb24gPSBhcmd2WzNdOwor CisgICAgYnMgPSBiZHJ2X25ld19vcGVuKGZpbGVuYW1lLCAicWNvdzIiKTsKKyAgICBpZiAoIWJz KQorICAgICAgICBlcnJvcigiQ291bGQgbm90IG9wZW4gcWNvdzIgaW1hZ2UgJyVzJyIsIGZpbGVu YW1lKTsKKworICAgIGlmIChiZHJ2X3NldF9hbm5vdChicywgYW5hbWUsIChjb25zdCBjaGFyICop YW5ub3RhdGlvbikgPCAwKSB7CisgICAgICAgIGVycm9yKCJDb3VsZCBub3Qgc3RvcmUgY29tbWFu ZCBsaW5lIG9wdGlvbnMgaW50byAnJXMnIiwgZmlsZW5hbWUpOworICAgIH0KKyAgICAKKyAgICBi ZHJ2X2RlbGV0ZShicyk7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgaW1nX2NvbW1p dChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgaW50IGMsIHJldDsKQEAgLTU3NywxMSAr NjA3LDE5IEBAIHN0YXRpYyB2b2lkIGR1bXBfc25hcHNob3RzKEJsb2NrRHJpdmVyU3RhdGUgKmJz KQogICAgIG5iX3NucyA9IGJkcnZfc25hcHNob3RfbGlzdChicywgJnNuX3RhYik7CiAgICAgaWYg KG5iX3NucyA8PSAwKQogICAgICAgICByZXR1cm47Ci0gICAgcHJpbnRmKCJTbmFwc2hvdCBsaXN0 OlxuIik7CisKKyAgICBwcmludGYoIlxuQW5ub3RhdGlvbnM6XG4iKTsKKyAgICBmb3IgKGkgPSAw OyBpIDwgbmJfc25zOyBpKyspIHsKKyAgICAgICAgc24gPSAmc25fdGFiW2ldOworICAgICAgICBp ZiAoYmRydl9zbmFwc2hvdF9hbm5vdGF0ZWQoc24pKQorICAgICAgICAgICAgcHJpbnRmKCIlc1xu IiwgYmRydl9zbmFwc2hvdF9kdW1wKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHNuKSk7CisgICAgfQorICAg IHByaW50ZigiXG5TbmFwc2hvdCBsaXN0OlxuIik7CiAgICAgcHJpbnRmKCIlc1xuIiwgYmRydl9z bmFwc2hvdF9kdW1wKGJ1Ziwgc2l6ZW9mKGJ1ZiksIE5VTEwpKTsKICAgICBmb3IoaSA9IDA7IGkg PCBuYl9zbnM7IGkrKykgewogICAgICAgICBzbiA9ICZzbl90YWJbaV07Ci0gICAgICAgIHByaW50 ZigiJXNcbiIsIGJkcnZfc25hcHNob3RfZHVtcChidWYsIHNpemVvZihidWYpLCBzbikpOworICAg ICAgICBpZiAoIWJkcnZfc25hcHNob3RfYW5ub3RhdGVkKHNuKSkKKyAgICAgICAgICAgIHByaW50 ZigiJXNcbiIsIGJkcnZfc25hcHNob3RfZHVtcChidWYsIHNpemVvZihidWYpLCBzbikpOwogICAg IH0KICAgICBxZW11X2ZyZWUoc25fdGFiKTsKIH0KQEAgLTY3Myw3ICs3MTEsOSBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIGhlbHAoKTsKICAgICBjbWQgPSBhcmd2 WzFdOwogICAgIG9wdGluZCsrOwotICAgIGlmICghc3RyY21wKGNtZCwgImNyZWF0ZSIpKSB7Cisg ICAgaWYgKCFzdHJjbXAoY21kLCAiY21kbGluZSIpKSB7CisJaW1nX2NtZGxpbmUoYXJnYywgYXJn dik7CisgICAgfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImNyZWF0ZSIpKSB7CiAgICAgICAgIGlt Z19jcmVhdGUoYXJnYywgYXJndik7CiAgICAgfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImNvbW1p dCIpKSB7CiAgICAgICAgIGltZ19jb21taXQoYXJnYywgYXJndik7Cg== ------=_Part_131054_25267525.1186602734651--