[Libvirt-cim] [PATCH] Add support for deactivation of disk caching
Chip Vincent
cvincent at linux.vnet.ibm.com
Tue Feb 22 02:54:05 UTC 2011
+1. Nit = "cache" should be "Cache" in CIM, but okay to deal with during
future cleanup. Pushed.
On 02/16/2011 12:53 PM, Sharad Mishra wrote:
> # HG changeset patch
> # User Sharad Mishra<snmishra at us.ibm.com>
> # Date 1297878704 28800
> # Node ID a1bb536dcf5ca836a2b09d7682134c88a4fbeb6e
> # Parent 5217c96d817d3d330898df26dd4262b9c26abc21
> Add support for deactivation of disk caching.
>
> This patch adds support to deactivate caching of disk devices.
>
> Signed-off-by: Sharad Mishra<snmishra at us.ibm.com>
>
> diff -r 5217c96d817d -r a1bb536dcf5c libxkutil/device_parsing.c
> --- a/libxkutil/device_parsing.c Wed Feb 16 06:48:11 2011 -0800
> +++ b/libxkutil/device_parsing.c Wed Feb 16 09:51:44 2011 -0800
> @@ -53,6 +53,7 @@
> free(dev->type);
> free(dev->device);
> free(dev->driver);
> + free(dev->cache);
> free(dev->source);
> free(dev->virtual_dev);
> free(dev->bus_type);
> @@ -241,6 +242,7 @@
> ddev->driver = get_attr_value(child, "name");
> if (ddev->driver == NULL)
> goto err;
> + ddev->cache = get_attr_value(child, "cache");
> } else if (XSTREQ(child->name, "source")) {
> ddev->source = get_attr_value(child, "file");
> if (ddev->source) {
> @@ -739,6 +741,7 @@
> DUP_FIELD(dev, _dev, dev.disk.type);
> DUP_FIELD(dev, _dev, dev.disk.device);
> DUP_FIELD(dev, _dev, dev.disk.driver);
> + DUP_FIELD(dev, _dev, dev.disk.cache);
> DUP_FIELD(dev, _dev, dev.disk.source);
> DUP_FIELD(dev, _dev, dev.disk.virtual_dev);
> DUP_FIELD(dev, _dev, dev.disk.bus_type);
> diff -r 5217c96d817d -r a1bb536dcf5c libxkutil/device_parsing.h
> --- a/libxkutil/device_parsing.h Wed Feb 16 06:48:11 2011 -0800
> +++ b/libxkutil/device_parsing.h Wed Feb 16 09:51:44 2011 -0800
> @@ -53,6 +53,7 @@
> bool readonly;
> bool shareable;
> char *bus_type;
> + char *cache;
> };
>
> struct net_device {
> diff -r 5217c96d817d -r a1bb536dcf5c libxkutil/xmlgen.c
> --- a/libxkutil/xmlgen.c Wed Feb 16 06:48:11 2011 -0800
> +++ b/libxkutil/xmlgen.c Wed Feb 16 09:51:44 2011 -0800
> @@ -84,6 +84,15 @@
> xmlNewProp(disk, BAD_CAST "type", BAD_CAST "file");
> xmlNewProp(disk, BAD_CAST "device", BAD_CAST dev->device);
>
> + tmp = xmlNewChild(disk, NULL, BAD_CAST "driver", NULL);
> + if (tmp == NULL)
> + return XML_ERROR;
> + if(dev->driver != NULL) {
> + xmlNewProp(tmp, BAD_CAST "name", BAD_CAST dev->driver);
> + if(dev->cache != NULL)
> + xmlNewProp(tmp, BAD_CAST "cache", BAD_CAST dev->cache);
> + }
> +
> tmp = xmlNewChild(disk, NULL, BAD_CAST "source", NULL);
> if (tmp == NULL)
> return XML_ERROR;
> diff -r 5217c96d817d -r a1bb536dcf5c schema/ResourceAllocationSettingData.mof
> --- a/schema/ResourceAllocationSettingData.mof Wed Feb 16 06:48:11 2011 -0800
> +++ b/schema/ResourceAllocationSettingData.mof Wed Feb 16 09:51:44 2011 -0800
> @@ -20,6 +20,9 @@
> [Description ("readonly mode for disk")]
> boolean readonly;
>
> + [Description ("cache setting for device")]
> + string cache;
> +
> };
>
> [Description ("KVM virtual disk configuration"),
> @@ -41,6 +44,9 @@
>
> [Description ("readonly mode for disk")]
> boolean readonly;
> +
> + [Description ("cache setting for device")]
> + string cache;
> };
>
> [Description ("LXC virtual disk configuration"),
> diff -r 5217c96d817d -r a1bb536dcf5c src/Virt_RASD.c
> --- a/src/Virt_RASD.c Wed Feb 16 06:48:11 2011 -0800
> +++ b/src/Virt_RASD.c Wed Feb 16 09:51:44 2011 -0800
> @@ -281,6 +281,12 @@
> (CMPIValue *)&(dev->dev.disk.readonly),
> CMPI_boolean);
>
> + if(dev->dev.disk.cache)
> + CMSetProperty(inst,
> + "cache",
> + (CMPIValue *)dev->dev.disk.cache,
> + CMPI_chars);
> +
> return s;
> }
>
> diff -r 5217c96d817d -r a1bb536dcf5c src/Virt_SettingsDefineCapabilities.c
> --- a/src/Virt_SettingsDefineCapabilities.c Wed Feb 16 06:48:11 2011 -0800
> +++ b/src/Virt_SettingsDefineCapabilities.c Wed Feb 16 09:51:44 2011 -0800
> @@ -853,6 +853,7 @@
> uint64_t disk_size,
> uint16_t emu_type,
> bool readonly,
> + const char *cache,
> struct inst_list *list)
> {
> const char *dev;
> @@ -899,6 +900,10 @@
> if(readonly)
> CMSetProperty(inst, "readonly",
> (CMPIValue *)&readonly, CMPI_boolean);
> +
> + if(cache != NULL)
> + CMSetProperty(inst, "cache",
> + (CMPIValue *)cache, CMPI_chars);
> }
>
> inst_list_add(list, inst);
> @@ -920,6 +925,7 @@
> const char *dev_str = NULL;
> char *id_str = NULL;
> bool readonly = true;
> + const char *cache = "none";
>
> if (emu_type == VIRT_DISK_TYPE_CDROM)
> dev_str = "CDROM";
> @@ -966,6 +972,7 @@
> vol_size,
> emu_type,
> readonly,
> + cache,
> list);
> }
> } else if (STREQ(pfx, "KVM")) {
> @@ -976,6 +983,7 @@
> vol_size,
> emu_type,
> readonly,
> + cache,
> list);
>
> } else if (!STREQ(pfx, "LXC")){
> @@ -1050,6 +1058,7 @@
> int type = 0;
> bool ret;
> bool readonly = true;
> + const char *cache = "none";
>
> CMPIStatus s = {CMPI_RC_OK, NULL};
>
> @@ -1101,6 +1110,7 @@
> disk_size,
> emu_type,
> readonly,
> + cache,
> list);
> if (s.rc != CMPI_RC_OK)
> goto out;
> @@ -1121,6 +1131,7 @@
> disk_size,
> emu_type,
> readonly,
> + cache,
> list);
> }
>
> @@ -1247,6 +1258,7 @@
> int ret;
> uint16_t emu_type = 0;
> bool readonly = false;
> + const char *cache = "none";
>
> ret = virStorageVolGetInfo(volume_ptr,&vol_info);
> if (ret == -1) {
> @@ -1304,6 +1316,7 @@
> vol_size,
> emu_type,
> readonly,
> + cache,
> list);
> }
> } else if (STREQ(pfx, "KVM")) {
> @@ -1314,6 +1327,7 @@
> vol_size,
> emu_type,
> readonly,
> + cache,
> list);
> } else {
> cu_statusf(_BROKER,&s,
> diff -r 5217c96d817d -r a1bb536dcf5c src/Virt_VirtualSystemManagementService.c
> --- a/src/Virt_VirtualSystemManagementService.c Wed Feb 16 06:48:11 2011 -0800
> +++ b/src/Virt_VirtualSystemManagementService.c Wed Feb 16 09:51:44 2011 -0800
> @@ -878,6 +878,12 @@
> dev->dev.disk.bus_type = NULL;
> else
> dev->dev.disk.bus_type = strdup(val);
> +
> + free(dev->dev.disk.cache);
> + if (cu_get_str_prop(inst, "cache",&val) != CMPI_RC_OK)
> + dev->dev.disk.cache = NULL;
> + else
> + dev->dev.disk.cache = strdup(val);
>
> free(dev->id);
> dev->id = strdup(dev->dev.disk.virtual_dev);
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
--
Chip Vincent
Open Virtualization
IBM Linux Technology Center
cvincent at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list