Re: [PATCH v3 2/3] storage: optional 'refresh' elemement on pool

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/19/19 2:42 PM, jdillama@xxxxxxxxxx wrote:
From: Jason Dillaman <dillaman@xxxxxxxxxx>

The new 'refresh' element can override the default refresh operations
for a storage pool. The only currently supported override is to set
the volume allocation size to the volume capacity. This can be specified
by adding the following snippet:

<pool>
...
   <refresh>
     <volume allocation='capacity'/>
   </refresh>
...
</pool>

This is useful for certain backends where computing the actual allocation
of a volume might be an expensive operation.

Signed-off-by: Jason Dillaman <dillaman@xxxxxxxxxx>
---
  docs/formatstorage.html.in                    | 27 +++++++++++++++++++
  docs/schemas/storagecommon.rng                |  7 +++++
  docs/schemas/storagepool.rng                  | 23 ++++++++++++++++
  src/conf/storage_conf.c                       | 27 +++++++++++++++++++
  src/conf/storage_conf.h                       |  9 +++++++
  .../pool-rbd-refresh-volume-allocation.xml    | 15 +++++++++++
  .../pool-rbd-refresh-volume-allocation.xml    | 18 +++++++++++++
  tests/storagepoolxml2xmltest.c                |  1 +
  8 files changed, 127 insertions(+)
  create mode 100644 tests/storagepoolxml2xmlin/pool-rbd-refresh-volume-allocation.xml
  create mode 100644 tests/storagepoolxml2xmlout/pool-rbd-refresh-volume-allocation.xml



diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
index bfbebd15bd..f61d8f5a18 100644
--- a/src/conf/storage_conf.h
+++ b/src/conf/storage_conf.h
@@ -83,6 +83,13 @@ struct _virStorageVolSource {
                     * backend for partition type creation */
  };
+typedef enum {
+   VIR_STORAGE_VOL_REFRESH_ALLOCATION_DEFAULT,  /* compute actual allocation */
+   VIR_STORAGE_VOL_REFRESH_ALLOCATION_CAPACITY, /* use logical capacity */
+   VIR_STORAGE_VOL_REFRESH_ALLOCATION_LAST,
+} virStorageVolRefreshAllocationType;
+
+VIR_ENUM_DECL(virStorageVolRefreshAllocation);
typedef struct _virStorageVolDef virStorageVolDef;
  typedef virStorageVolDef *virStorageVolDefPtr;
@@ -243,6 +250,8 @@ struct _virStoragePoolDef {
      unsigned char uuid[VIR_UUID_BUFLEN];
      int type; /* virStoragePoolType */
+ int refresh_volume_allocation; /* virStorageVolRefreshAllocationType */

We want our structures to be as close to XML as possible. I'm introducing virStoragePoolDefRefresh and virStorageVolDefRefresh structs, parser and formatter funcs and renaming the enum as a result of that.

I was also playing with the placement of <refresh/> element within <pool/> XML. At first I though it should go a bit higher - somewhere close to <allocation/>, <capacity/> and <available/>. My reasoning was that this tunes how those values are computed. But then I realized, for storage pool XML we keep config knobs (e.g. namespace data) at the end. So I'm keeping the element at the place you're introcing it - it's correct after all.

Michal

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



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux