[libvirt] [PATCH 02/50] list: Expose pool type via virStoragePoolGetInfo

Daniel P. Berrange berrange at redhat.com
Fri Jul 20 13:01:54 UTC 2012


On Fri, Jul 20, 2012 at 09:00:21PM +0800, Osier Yang wrote:
> On 2012年07月20日 20:44, Daniel P. Berrange wrote:
> >On Fri, Jul 20, 2012 at 02:28:26PM +0200, Jiri Denemark wrote:
> >>On Fri, Jul 20, 2012 at 00:40:33 +0800, Osier Yang wrote:
> >>>Mainly for later patches' use, to filter the pools by pool type.
> >>>
> >>>include/libvirt/libvirt.h.in: Add enum virStoragePoolType; Add
> >>>pool type to virStoragePoolInfo.
> >>>
> >>>src/conf/storage_conf.h: Remove enum virStoragePoolType.
> >>>
> >>>src/storage/storage_driver.c: Expose pool type via storagePoolGetInfo.
> >>>---
> >>>  include/libvirt/libvirt.h.in |   17 +++++++++++++++++
> >>>  src/conf/storage_conf.h      |   19 -------------------
> >>>  src/storage/storage_driver.c |    2 ++
> >>>  3 files changed, 19 insertions(+), 19 deletions(-)
> >>>
> >>>diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> >>>index e34438c..2820b2a 100644
> >>>--- a/include/libvirt/libvirt.h.in
> >>>+++ b/include/libvirt/libvirt.h.in
> >>>@@ -2335,6 +2335,22 @@ typedef struct _virStoragePool virStoragePool;
> >>>   */
> >>>  typedef virStoragePool *virStoragePoolPtr;
> >>>
> >>>+typedef enum {
> >>>+    VIR_STORAGE_POOL_DIR,      /* Local directory */
> >>>+    VIR_STORAGE_POOL_FS,       /* Local filesystem */
> >>>+    VIR_STORAGE_POOL_NETFS,    /* Networked filesystem - eg NFS, GFS, etc */
> >>>+    VIR_STORAGE_POOL_LOGICAL,  /* Logical volume groups / volumes */
> >>>+    VIR_STORAGE_POOL_DISK,     /* Disk partitions */
> >>>+    VIR_STORAGE_POOL_ISCSI,    /* iSCSI targets */
> >>>+    VIR_STORAGE_POOL_SCSI,     /* SCSI HBA */
> >>>+    VIR_STORAGE_POOL_MPATH,    /* Multipath devices */
> >>>+    VIR_STORAGE_POOL_RBD,      /* RADOS Block Device */
> >>>+    VIR_STORAGE_POOL_SHEEPDOG, /* Sheepdog device */
> >>>+
> >>>+#ifdef VIR_ENUM_SENTINELS
> >>>+    VIR_STORAGE_POOL_LAST,
> >>>+#endif
> >>>+} virStoragePoolType;
> >>>
> >>>  typedef enum {
> >>>      VIR_STORAGE_POOL_INACTIVE = 0, /* Not running */
> >>>@@ -2365,6 +2381,7 @@ typedef enum {
> >>>  typedef struct _virStoragePoolInfo virStoragePoolInfo;
> >>>
> >>>  struct _virStoragePoolInfo {
> >>>+  int type;                      /* virStoragePoolType */
> >>>    int state;                     /* virStoragePoolState flags */
> >>>    unsigned long long capacity;   /* Logical size bytes */
> >>>    unsigned long long allocation; /* Current allocation bytes */
> >>
> >>Oops, you can't change public structs. Any combination of an app and libvirt
> >>library that would not have the same definition of this struct would fail.
> 
> Oh, my bad. How about a new API like:
> 
> int virStoragePoolGetInfoFlags (virStoragePoolPtr pool,
>                                 virTypedParameterPtr params,
>                                 int *nparams,
>                                 unsigned int flags);
> 
> With the param fields like:
> 
> # define VIR_STORAGE_POOL_GET_INFO_STATE       "state"
> # define VIR_STORAGE_POOL_GET_INFO_TYPE        "type"
> # define VIR_STORAGE_POOL_GET_INFO_CAPACITY    "capacity"
> # define VIR_STORAGE_POOL_GET_INFO_ALLOCATION  "allocation"
> 
> Assuming one wants to get more info about a pool in future, we would
> need a new API like this, with no suffering from not able to change
> to public struct.
> 
> >
> >Fortunately no other part of this patch series appears to rely on this
> >extra field. Just remove this addition&  the place in storage_driver.c
> >which sets it. The rest of this patch series can still be reviewed
> >as is
> 
> The 'type' is used to filter the returned pool objects, so patches
> 1/50 to 14/50 should be skipped, though there is several patches
> in the range not related with storage pool specificly.

Filtering is done inside the storage driver, so I don't see why
this needs to be exposed in the public API.

> I will add a new API virStoragePoolGetInfoFlags if no disagreement,
> and rebase the storage pool patches as a v2.

I don't see any need for this.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list