From: Konstantin Kostiuk <kkostiuk@redhat.com>
To: Kfir Manor <kfir@daynix.com>
Cc: qemu-devel@nongnu.org, Michael Roth <michael.roth@amd.com>,
Yan Vugenfirer <yan@daynix.com>
Subject: Re: [PATCH 2/3] qga/win/vss: query VSS backup type
Date: Wed, 15 Feb 2023 04:23:00 -0600 [thread overview]
Message-ID: <CAPMcbCob-SEjNtmghGpQN6yG2ZX28wAaW3i4785c5Z_uPE4vCA@mail.gmail.com> (raw)
In-Reply-To: <20230209085004.2745131-3-kfir@daynix.com>
[-- Attachment #1: Type: text/plain, Size: 3303 bytes --]
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>
On Thu, Feb 9, 2023 at 2:50 AM Kfir Manor <kfir@daynix.com> wrote:
> Query VSS backup type number (DWORD) from QEMU Guest Agent VSS Provider
> registry key registry value VssOption
>
> Translate the VSS backup type number (DWORD) into its VSS backup type
> (VSS_BACKUP_TYPE)
>
> Returns the queried VSS backup type if the program encounters unexpected
> behaviors or values return default VSS backup type VSS_BT_FULL instead
>
> Signed-off-by: Kfir Manor <kfir@daynix.com>
> ---
> qga/vss-win32/requester.cpp | 38 +++++++++++++++++++++++++++++++++++++
> qga/vss-win32/vss-handles.h | 3 +++
> 2 files changed, 41 insertions(+)
>
> diff --git a/qga/vss-win32/requester.cpp b/qga/vss-win32/requester.cpp
> index b371affeab..27fdb9236b 100644
> --- a/qga/vss-win32/requester.cpp
> +++ b/qga/vss-win32/requester.cpp
> @@ -23,6 +23,8 @@
> /* Call QueryStatus every 10 ms while waiting for frozen event */
> #define VSS_TIMEOUT_EVENT_MSEC 10
>
> +#define DEFAULT_VSS_BACKUP_TYPE VSS_BT_FULL
> +
> #define err_set(e, err, fmt, ...)
> \
> ((e)->error_setg_win32_wrapper((e)->errp, __FILE__, __LINE__,
> __func__, \
> err, fmt, ## __VA_ARGS__))
> @@ -234,6 +236,42 @@ out:
> }
> }
>
> +DWORD get_reg_dword_value(HKEY baseKey, LPCSTR subKey, LPCSTR valueName,
> + DWORD defaultData)
> +{
> + DWORD regGetValueError;
> + DWORD dwordData;
> + DWORD dataSize = sizeof(DWORD);
> +
> + regGetValueError = RegGetValue(baseKey, subKey, valueName,
> RRF_RT_DWORD,
> + NULL, &dwordData, &dataSize);
> + if (regGetValueError != ERROR_SUCCESS) {
> + return defaultData;
> + }
> + return dwordData;
> +}
> +
> +bool is_valid_vss_backup_type(VSS_BACKUP_TYPE vssBT)
> +{
> + return (vssBT > VSS_BT_UNDEFINED && vssBT < VSS_BT_OTHER);
> +}
> +
> +VSS_BACKUP_TYPE get_vss_backup_type(
> + VSS_BACKUP_TYPE defaultVssBT = DEFAULT_VSS_BACKUP_TYPE)
> +{
> + VSS_BACKUP_TYPE vssBackupType;
> +
> + vssBackupType = static_cast<VSS_BACKUP_TYPE>(
> + get_reg_dword_value(HKEY_LOCAL_MACHINE,
> +
> QGA_PROVIDER_REGISTRY_ADDRESS,
> + "VssOption",
> + defaultVssBT));
> + if (!is_valid_vss_backup_type(vssBackupType)) {
> + return defaultVssBT;
> + }
> + return vssBackupType;
> +}
> +
> void requester_freeze(int *num_vols, void *mountpoints, ErrorSet *errset)
> {
> COMPointer<IVssAsync> pAsync;
> diff --git a/qga/vss-win32/vss-handles.h b/qga/vss-win32/vss-handles.h
> index 0f8a741ad2..1a7d842129 100644
> --- a/qga/vss-win32/vss-handles.h
> +++ b/qga/vss-win32/vss-handles.h
> @@ -6,6 +6,9 @@
> #define QGA_PROVIDER_NAME "QEMU Guest Agent VSS Provider"
> #define QGA_PROVIDER_LNAME L(QGA_PROVIDER_NAME)
> #define QGA_PROVIDER_VERSION L(QEMU_VERSION)
> +#define QGA_PROVIDER_REGISTRY_ADDRESS "SYSTEM\\CurrentControlSet"\
> + "\\Services"\
> + "\\" QGA_PROVIDER_NAME
>
> #define EVENT_NAME_FROZEN "Global\\QGAVSSEvent-frozen"
> #define EVENT_NAME_THAW "Global\\QGAVSSEvent-thaw"
> --
> 2.38.1
>
>
[-- Attachment #2: Type: text/html, Size: 4403 bytes --]
next prev parent reply other threads:[~2023-02-15 10:23 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-09 8:50 [PATCH 0/3] qga/win/vss: add VSS backup type options Kfir Manor
2023-02-09 8:50 ` [PATCH 1/3] qga/win/installer: add VssOption to installer Kfir Manor
2023-02-15 10:22 ` Konstantin Kostiuk
2023-02-09 8:50 ` [PATCH 2/3] qga/win/vss: query VSS backup type Kfir Manor
2023-02-15 10:23 ` Konstantin Kostiuk [this message]
2023-02-09 8:50 ` [PATCH 3/3] qga/win/vss: requester_freeze changes Kfir Manor
2023-02-15 10:23 ` Konstantin Kostiuk
2023-02-13 16:20 ` [PATCH 0/3] qga/win/vss: add VSS backup type options Konstantin Kostiuk
2023-02-14 9:20 ` Marc-André Lureau
2023-02-15 10:21 ` Konstantin Kostiuk
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=CAPMcbCob-SEjNtmghGpQN6yG2ZX28wAaW3i4785c5Z_uPE4vCA@mail.gmail.com \
--to=kkostiuk@redhat.com \
--cc=kfir@daynix.com \
--cc=michael.roth@amd.com \
--cc=qemu-devel@nongnu.org \
--cc=yan@daynix.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).