From: Fiona Ebner <f.ebner@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
Filip Schauer <f.schauer@proxmox.com>
Subject: Re: [pve-devel] [PATCH qemu] fix #1534: vma: Add extract filter for disk images
Date: Mon, 7 Aug 2023 14:52:45 +0200 [thread overview]
Message-ID: <b81bdeef-9841-e4b8-d228-c8e349dc54dc@proxmox.com> (raw)
In-Reply-To: <20230807100802.328313-1-f.schauer@proxmox.com>
Am 07.08.23 um 12:08 schrieb Filip Schauer:
> Add a filter to the "vma extract" command. A wildcard can be passed with
> "-f" to match disk images that should be extracted.
The bug report doesn't mention wildcards, but a list of image names.
Restoring drive-ide2 and drive-scsi0 becomes awkward with a single
pattern and I don't see why a list of just the names shouldn't suffice.
Cases with many disks are rather rare and even in extreme cases it won't
be more than ~30 disks or so. And if users request patterns, we can
still add it on top.
> @@ -2064,12 +2069,12 @@ index 0000000000..304f02bc84
> +
> + int i;
> + int vmstate_fd = -1;
> -+ guint8 vmstate_stream = 0;
> ++ uint8_t filter_bitmap[256 / 8];
I'd rather use a bool array (if the compiler optimizes it to a bitmap
great, otherwise it's still easier to read), but...
> ++ memset(filter_bitmap, 0, sizeof(filter_bitmap));
> +
> + for (i = 1; i < 255; i++) {
> + VmaDeviceInfo *di = vma_reader_get_device_info(vmar, i);
> + if (di && (strcmp(di->devname, "vmstate") == 0)) {
> -+ vmstate_stream = i;
> + char *statefn = g_strdup_printf("%s/vmstate.bin", dirname);
> + vmstate_fd = open(statefn, O_WRONLY|O_CREAT|O_EXCL, 0644);
> + if (vmstate_fd < 0) {
> @@ -2078,6 +2083,16 @@ index 0000000000..304f02bc84
> + }
> + g_free(statefn);
> + } else if (di) {
> ++ if (filter && (fnmatch(filter, di->devname, 0) != 0)) {
> ++ if (vma_reader_register_bs(vmar, i, NULL, true, true, &errp) < 0) {
> ++ g_error("%s", error_get_pretty(errp));
> ++ }
> ++
> ++ continue;
> ++ }
...instead of doing this, you could also just make sure not to allocate
an image when the name is not included and set the skip flag when
calling vma_reader_register_bs(), re-using the existing mechanism for
partial restore.
Does not registering all even work? I thought vma was written in such a
way that it would read everything, which is why the skip logic was
necessary IIRC. Peeking at the code, doesn't restore_write_data() call
restore_write_data() with a dev_id from the backup we didn't register
the stream for at some point otherwise?
prev parent reply other threads:[~2023-08-07 12:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-07 10:08 Filip Schauer
2023-08-07 12:52 ` Fiona Ebner [this message]
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=b81bdeef-9841-e4b8-d228-c8e349dc54dc@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=f.schauer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal