Re: [libvirt] [PATCH v2 11/25] qemu: Add infrastructure for statistics of a backup job

2019-12-09 Thread Ján Tomko

On Tue, Dec 03, 2019 at 06:17:33PM +0100, Peter Krempa wrote:

Introduce QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP and the convertors and other
plumbing to be able to report statistics for the backup job.

Signed-off-by: Peter Krempa 
---
src/qemu/qemu_domain.c | 62 ++
src/qemu/qemu_domain.h | 10 +++
src/qemu/qemu_driver.c |  4 +++
3 files changed, 76 insertions(+)



Reviewed-by: Ján Tomko 

Jano


signature.asc
Description: PGP signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Re: [libvirt] [PATCH v2 11/25] qemu: Add infrastructure for statistics of a backup job

2019-12-04 Thread Eric Blake

On 12/3/19 11:17 AM, Peter Krempa wrote:

Introduce QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP and the convertors and other
plumbing to be able to report statistics for the backup job.

Signed-off-by: Peter Krempa 
---
  src/qemu/qemu_domain.c | 62 ++
  src/qemu/qemu_domain.h | 10 +++
  src/qemu/qemu_driver.c |  4 +++
  3 files changed, 76 insertions(+)




+++ b/src/qemu/qemu_driver.c
@@ -13905,6 +13905,10 @@ qemuDomainGetJobStatsInternal(virQEMUDriverPtr driver,
  goto cleanup;
  break;

+case QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP:
+/* TODO implement for backup job */
+break;


The TODO goes away later in the series.

Reviewed-by: Eric Blake 

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.   +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list



Re: [libvirt] [PATCH v2 11/25] qemu: Add infrastructure for statistics of a backup job

2019-12-04 Thread Daniel P . Berrangé
On Tue, Dec 03, 2019 at 06:17:33PM +0100, Peter Krempa wrote:
> Introduce QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP and the convertors and other
> plumbing to be able to report statistics for the backup job.
> 
> Signed-off-by: Peter Krempa 
> ---
>  src/qemu/qemu_domain.c | 62 ++
>  src/qemu/qemu_domain.h | 10 +++
>  src/qemu/qemu_driver.c |  4 +++
>  3 files changed, 76 insertions(+)

Reviewed-by: Daniel P. Berrangé 


Regards,
Daniel
-- 
|: https://berrange.com  -o-https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o-https://fstop138.berrange.com :|
|: https://entangle-photo.org-o-https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH v2 11/25] qemu: Add infrastructure for statistics of a backup job

2019-12-03 Thread Peter Krempa
Introduce QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP and the convertors and other
plumbing to be able to report statistics for the backup job.

Signed-off-by: Peter Krempa 
---
 src/qemu/qemu_domain.c | 62 ++
 src/qemu/qemu_domain.h | 10 +++
 src/qemu/qemu_driver.c |  4 +++
 3 files changed, 76 insertions(+)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 8d2923300d..c1b0f81c81 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -519,6 +519,12 @@ qemuDomainJobInfoToInfo(qemuDomainJobInfoPtr jobInfo,
 info->memRemaining = info->memTotal - info->memProcessed;
 break;

+case QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP:
+info->fileTotal = jobInfo->stats.backup.total;
+info->fileProcessed = jobInfo->stats.backup.transferred;
+info->fileRemaining = info->fileTotal - info->fileProcessed;
+break;
+
 case QEMU_DOMAIN_JOB_STATS_TYPE_NONE:
 break;
 }
@@ -751,6 +757,59 @@ qemuDomainDumpJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
 }


+static int
+qemuDomainBackupJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
+int *type,
+virTypedParameterPtr *params,
+int *nparams)
+{
+qemuDomainBackupStats *stats = >stats.backup;
+g_autoptr(virTypedParamList) par = g_new0(virTypedParamList, 1);
+
+if (virTypedParamListAddInt(par, jobInfo->operation,
+VIR_DOMAIN_JOB_OPERATION) < 0)
+return -1;
+
+if (virTypedParamListAddULLong(par, jobInfo->timeElapsed,
+   VIR_DOMAIN_JOB_TIME_ELAPSED) < 0)
+return -1;
+
+if (stats->transferred > 0 || stats->total > 0) {
+if (virTypedParamListAddULLong(par, stats->total,
+   VIR_DOMAIN_JOB_DISK_TOTAL) < 0)
+return -1;
+
+if (virTypedParamListAddULLong(par, stats->transferred,
+   VIR_DOMAIN_JOB_DISK_PROCESSED) < 0)
+return -1;
+
+if (virTypedParamListAddULLong(par, stats->total - stats->transferred,
+   VIR_DOMAIN_JOB_DISK_REMAINING) < 0)
+return -1;
+}
+
+if (stats->tmp_used > 0 || stats->tmp_total > 0) {
+if (virTypedParamListAddULLong(par, stats->tmp_used,
+   VIR_DOMAIN_JOB_DISK_TEMP_USED) < 0)
+return -1;
+
+if (virTypedParamListAddULLong(par, stats->tmp_total,
+   VIR_DOMAIN_JOB_DISK_TEMP_TOTAL) < 0)
+return -1;
+}
+
+if (jobInfo->status != QEMU_DOMAIN_JOB_STATUS_ACTIVE &&
+virTypedParamListAddBoolean(par,
+jobInfo->status == 
QEMU_DOMAIN_JOB_STATUS_COMPLETED,
+VIR_DOMAIN_JOB_SUCCESS) < 0)
+return -1;
+
+*nparams = virTypedParamListStealParams(par, params);
+*type = qemuDomainJobStatusToType(jobInfo->status);
+return 0;
+}
+
+
 int
 qemuDomainJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
   int *type,
@@ -765,6 +824,9 @@ qemuDomainJobInfoToParams(qemuDomainJobInfoPtr jobInfo,
 case QEMU_DOMAIN_JOB_STATS_TYPE_MEMDUMP:
 return qemuDomainDumpJobInfoToParams(jobInfo, type, params, nparams);

+case QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP:
+return qemuDomainBackupJobInfoToParams(jobInfo, type, params, nparams);
+
 case QEMU_DOMAIN_JOB_STATS_TYPE_NONE:
 virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("invalid job statistics type"));
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 608546a27c..a552af6180 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -126,6 +126,7 @@ typedef enum {
 QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION,
 QEMU_DOMAIN_JOB_STATS_TYPE_SAVEDUMP,
 QEMU_DOMAIN_JOB_STATS_TYPE_MEMDUMP,
+QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP,
 } qemuDomainJobStatsType;


@@ -136,6 +137,14 @@ struct _qemuDomainMirrorStats {
 unsigned long long total;
 };

+typedef struct _qemuDomainBackupStats qemuDomainBackupStats;
+struct _qemuDomainBackupStats {
+unsigned long long transferred;
+unsigned long long total;
+unsigned long long tmp_used;
+unsigned long long tmp_total;
+};
+
 typedef struct _qemuDomainJobInfo qemuDomainJobInfo;
 typedef qemuDomainJobInfo *qemuDomainJobInfoPtr;
 struct _qemuDomainJobInfo {
@@ -160,6 +169,7 @@ struct _qemuDomainJobInfo {
 union {
 qemuMonitorMigrationStats mig;
 qemuMonitorDumpStats dump;
+qemuDomainBackupStats backup;
 } stats;
 qemuDomainMirrorStats mirrorStats;
 };
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 1911073f3e..3ebc902d4f 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -13905,6 +13905,10 @@ qemuDomainGetJobStatsInternal(virQEMUDriverPtr