[libvirt] Add virStorageVolResize()
Eric Blake
eblake at redhat.com
Sat Jan 28 00:27:15 UTC 2012
On 01/27/2012 04:40 PM, Zeeshan Ali (Khattak) wrote:
> From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>
>
> Add a new function to allow changing of capacity of storage volumes.
> ---
> include/libvirt/libvirt.h.in | 5 ++
> src/driver.h | 5 ++
> src/libvirt.c | 50 +++++++++++++++++++++++
> src/libvirt_public.syms | 1 +
> src/remote/remote_driver.c | 1 +
> src/remote/remote_protocol.x | 9 ++++-
> src/remote_protocol-structs | 6 +++
> src/storage/storage_backend.h | 6 +++
> src/storage/storage_backend_fs.c | 59 ++++++++++++++++++++++++++++
> src/storage/storage_driver.c | 80 ++++++++++++++++++++++++++++++++++++++
> src/util/storage_file.c | 16 ++++++++
> src/util/storage_file.h | 2 +
> tools/virsh.c | 53 +++++++++++++++++++++++++
> 13 files changed, 292 insertions(+), 1 deletions(-)
Part 2 of my review - the RPC implementation.
> diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
> index f79f53e..2bb4cbf 100644
> --- a/src/remote/remote_driver.c
> +++ b/src/remote/remote_driver.c
> @@ -4837,6 +4837,7 @@ static virStorageDriver storage_driver = {
> .volGetInfo = remoteStorageVolGetInfo, /* 0.4.1 */
> .volGetXMLDesc = remoteStorageVolGetXMLDesc, /* 0.4.1 */
> .volGetPath = remoteStorageVolGetPath, /* 0.4.1 */
> + .volResize = remoteStorageVolResize, /* 0.9.10 */
> .poolIsActive = remoteStoragePoolIsActive, /* 0.7.3 */
> .poolIsPersistent = remoteStoragePoolIsPersistent, /* 0.7.3 */
> };
> diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
> index 0f354bb..29f98fc 100644
> --- a/src/remote/remote_protocol.x
> +++ b/src/remote/remote_protocol.x
> @@ -1676,6 +1676,12 @@ struct remote_storage_vol_get_path_ret {
> remote_nonnull_string name;
> };
>
> +struct remote_storage_vol_resize_args {
> + remote_nonnull_storage_vol vol;
> + unsigned hyper capacity;
Based on my proposed API changes, this must be signed.
> + unsigned int flags;
> +};
> +
> /* Node driver calls: */
>
> struct remote_node_num_of_devices_args {
> @@ -2667,7 +2673,8 @@ enum remote_procedure {
> REMOTE_PROC_DOMAIN_SET_INTERFACE_PARAMETERS = 256, /* autogen autogen */
> REMOTE_PROC_DOMAIN_GET_INTERFACE_PARAMETERS = 257, /* skipgen skipgen */
> REMOTE_PROC_DOMAIN_SHUTDOWN_FLAGS = 258, /* autogen autogen */
> - REMOTE_PROC_STORAGE_VOL_WIPE_PATTERN = 259 /* autogen autogen */
> + REMOTE_PROC_STORAGE_VOL_WIPE_PATTERN = 259, /* autogen autogen */
> + REMOTE_PROC_STORAGE_VOL_RESIZE = 300 /* autogen autogen */
Skipping is not allowed :) 260 is just fine.
>
> /*
> * Notice how the entries are grouped in sets of 10 ?
> diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
> index de85862..9a60fc2 100644
> --- a/src/remote_protocol-structs
> +++ b/src/remote_protocol-structs
> @@ -1260,6 +1260,11 @@ struct remote_storage_vol_get_path_args {
> struct remote_storage_vol_get_path_ret {
> remote_nonnull_string name;
> };
> +struct remote_storage_vol_resize_args {
> + remote_nonnull_storage_vol vol;
> + uint64_t capacity;
> + u_int flags;
And regenerating this picks up a tweak.
> +};
> struct remote_node_num_of_devices_args {
> remote_string cap;
> u_int flags;
> @@ -2101,4 +2106,5 @@ enum remote_procedure {
> REMOTE_PROC_DOMAIN_GET_INTERFACE_PARAMETERS = 257,
> REMOTE_PROC_DOMAIN_SHUTDOWN_FLAGS = 258,
> REMOTE_PROC_STORAGE_VOL_WIPE_PATTERN = 259,
> + REMOTE_PROC_STORAGE_VOL_RESIZE = 300,
> };
The RPC stuff is pretty easy when it gets autogenerated :)
diff --git i/src/remote/remote_protocol.x w/src/remote/remote_protocol.x
index 29f98fc..7d104b2 100644
--- i/src/remote/remote_protocol.x
+++ w/src/remote/remote_protocol.x
@@ -1678,7 +1678,7 @@ struct remote_storage_vol_get_path_ret {
struct remote_storage_vol_resize_args {
remote_nonnull_storage_vol vol;
- unsigned hyper capacity;
+ hyper capacity;
unsigned int flags;
};
@@ -2674,7 +2674,7 @@ enum remote_procedure {
REMOTE_PROC_DOMAIN_GET_INTERFACE_PARAMETERS = 257, /* skipgen
skipgen */
REMOTE_PROC_DOMAIN_SHUTDOWN_FLAGS = 258, /* autogen autogen */
REMOTE_PROC_STORAGE_VOL_WIPE_PATTERN = 259, /* autogen autogen */
- REMOTE_PROC_STORAGE_VOL_RESIZE = 300 /* autogen autogen */
+ REMOTE_PROC_STORAGE_VOL_RESIZE = 260 /* autogen autogen */
/*
* Notice how the entries are grouped in sets of 10 ?
diff --git i/src/remote_protocol-structs w/src/remote_protocol-structs
index de85862..70a69f6 100644
--- i/src/remote_protocol-structs
+++ w/src/remote_protocol-structs
@@ -1260,6 +1260,11 @@ struct remote_storage_vol_get_path_args {
struct remote_storage_vol_get_path_ret {
remote_nonnull_string name;
};
+struct remote_storage_vol_resize_args {
+ remote_nonnull_storage_vol vol;
+ int64_t capacity;
+ u_int flags;
+};
struct remote_node_num_of_devices_args {
remote_string cap;
u_int flags;
@@ -2101,4 +2106,5 @@ enum remote_procedure {
REMOTE_PROC_DOMAIN_GET_INTERFACE_PARAMETERS = 257,
REMOTE_PROC_DOMAIN_SHUTDOWN_FLAGS = 258,
REMOTE_PROC_STORAGE_VOL_WIPE_PATTERN = 259,
+ REMOTE_PROC_STORAGE_VOL_RESIZE = 260,
};
--
Eric Blake eblake at redhat.com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120127/6efe9640/attachment-0001.sig>
More information about the libvir-list
mailing list