[libvirt] [PATCH libvirt-gconfig] Add support for domain filesystems with type=bind|ram

From: "Daniel P. Berrange" <berrange@redhat.com> This adds support for filesystems with type=bind or type=ram, eg <filesystem type='bind'> <source dir="/some/guest/file"/> <target dir=/other/guest/file"/> </filesystem> And <filesystem type='ram'> <source usage='102400'/> <target dir='/run'/> </filesystem> Signed-off-by: Daniel P. Berrange <berrange@redhat.com> --- libvirt-gconfig/libvirt-gconfig-domain-filesys.c | 19 +++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-filesys.h | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-filesys.c b/libvirt-gconfig/libvirt-gconfig-domain-filesys.c index c9c7aa8..54f124a 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-filesys.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-filesys.c @@ -146,6 +146,7 @@ void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys, switch (filesys->priv->type) { case GVIR_CONFIG_DOMAIN_FILESYS_MOUNT: + case GVIR_CONFIG_DOMAIN_FILESYS_BIND: attribute_name = "dir"; break; case GVIR_CONFIG_DOMAIN_FILESYS_FILE: @@ -157,6 +158,9 @@ void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys, case GVIR_CONFIG_DOMAIN_FILESYS_TEMPLATE: attribute_name = "name"; break; + case GVIR_CONFIG_DOMAIN_FILESYS_RAM: + g_return_if_reached(); + default: g_return_if_reached(); } @@ -166,6 +170,21 @@ void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys, attribute_name, source); } +void gvir_config_domain_filesys_set_ram_usage(GVirConfigDomainFilesys *filesys, + guint64 bytes) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_FILESYS(filesys)); + GVirConfigObject *src; + + src = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(filesys), + "source"); + + gvir_config_object_set_attribute_with_type(src, + "usage", G_TYPE_UINT64, bytes, + "units", G_TYPE_STRING, "bytes", + NULL); + +} void gvir_config_domain_filesys_set_target(GVirConfigDomainFilesys *filesys, const char *path) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-filesys.h b/libvirt-gconfig/libvirt-gconfig-domain-filesys.h index 2ceb2a8..e4b7c20 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-filesys.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-filesys.h @@ -61,6 +61,8 @@ typedef enum { GVIR_CONFIG_DOMAIN_FILESYS_BLOCK, GVIR_CONFIG_DOMAIN_FILESYS_FILE, GVIR_CONFIG_DOMAIN_FILESYS_TEMPLATE, + GVIR_CONFIG_DOMAIN_FILESYS_RAM, + GVIR_CONFIG_DOMAIN_FILESYS_BIND, } GVirConfigDomainFilesysType; typedef enum { @@ -89,6 +91,8 @@ void gvir_config_domain_filesys_set_driver_type(GVirConfigDomainFilesys *filesys GVirConfigDomainFilesysDriverType type); void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys, const char *source); +void gvir_config_domain_filesys_set_ram_usage(GVirConfigDomainFilesys *filesys, + guint64 bytes); void gvir_config_domain_filesys_set_target(GVirConfigDomainFilesys *filesys, const char *target); void gvir_config_domain_filesys_set_readonly(GVirConfigDomainFilesys *filesys, -- 1.7.10.2

On Mon, Jun 25, 2012 at 12:14:59PM +0100, Daniel P. Berrange wrote:
From: "Daniel P. Berrange" <berrange@redhat.com>
This adds support for filesystems with type=bind or type=ram,
Both of these are new in libvirt 0.9.13. However, libvirt-glib will still compile and work if it's linking with an older libvirt, the only issue will be that the API introduced in this patch won't work.
eg
<filesystem type='bind'> <source dir="/some/guest/file"/> <target dir=/other/guest/file"/> </filesystem>
And
<filesystem type='ram'> <source usage='102400'/> <target dir='/run'/> </filesystem>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com> --- libvirt-gconfig/libvirt-gconfig-domain-filesys.c | 19 +++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-filesys.h | 4 ++++ 2 files changed, 23 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-filesys.c b/libvirt-gconfig/libvirt-gconfig-domain-filesys.c index c9c7aa8..54f124a 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-filesys.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-filesys.c @@ -146,6 +146,7 @@ void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys,
switch (filesys->priv->type) { case GVIR_CONFIG_DOMAIN_FILESYS_MOUNT: + case GVIR_CONFIG_DOMAIN_FILESYS_BIND: attribute_name = "dir"; break; case GVIR_CONFIG_DOMAIN_FILESYS_FILE: @@ -157,6 +158,9 @@ void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys, case GVIR_CONFIG_DOMAIN_FILESYS_TEMPLATE: attribute_name = "name"; break; + case GVIR_CONFIG_DOMAIN_FILESYS_RAM: + g_return_if_reached(); + default: g_return_if_reached(); } @@ -166,6 +170,21 @@ void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys, attribute_name, source); }
+void gvir_config_domain_filesys_set_ram_usage(GVirConfigDomainFilesys *filesys, + guint64 bytes) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_FILESYS(filesys));
g_return_if_fail(filesys->priv->type == GVIR_CONFIG_DOMAIN_FILESYS_RAM); would spot incorrect uses of this API. ACK. Christophe
participants (2)
-
Christophe Fergeau
-
Daniel P. Berrange