1 /* 2 * libvirt-gconfig-domain-disk-driver.h: libvirt disk driver configuration 3 * 4 * Copyright (C) 2011, 2013 Red Hat, Inc. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library. If not, see 18 * <http://www.gnu.org/licenses/>. 19 * 20 * Author: Christophe Fergeau <cfergeau@redhat.com> 21 */ 22 23 #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) 24 #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." 25 #endif 26 27 #ifndef __LIBVIRT_GCONFIG_DOMAIN_DISK_DRIVER_H__ 28 #define __LIBVIRT_GCONFIG_DOMAIN_DISK_DRIVER_H__ 29 30 G_BEGIN_DECLS 31 32 #define GVIR_CONFIG_TYPE_DOMAIN_DISK_DRIVER (gvir_config_domain_disk_driver_get_type ()) 33 #define GVIR_CONFIG_DOMAIN_DISK_DRIVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK_DRIVER, GVirConfigDomainDiskDriver)) 34 #define GVIR_CONFIG_DOMAIN_DISK_DRIVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_DISK_DRIVER, GVirConfigDomainDiskDriverClass)) 35 #define GVIR_CONFIG_IS_DOMAIN_DISK_DRIVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK_DRIVER)) 36 #define GVIR_CONFIG_IS_DOMAIN_DISK_DRIVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_DISK_DRIVER)) 37 #define GVIR_CONFIG_DOMAIN_DISK_DRIVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK_DRIVER, GVirConfigDomainDiskDriverClass)) 38 39 typedef struct _GVirConfigDomainDiskDriver GVirConfigDomainDiskDriver; 40 typedef struct _GVirConfigDomainDiskDriverPrivate GVirConfigDomainDiskDriverPrivate; 41 typedef struct _GVirConfigDomainDiskDriverClass GVirConfigDomainDiskDriverClass; 42 43 struct _GVirConfigDomainDiskDriver 44 { 45 GVirConfigObject parent; 46 47 GVirConfigDomainDiskDriverPrivate *priv; 48 49 /* Do not add fields to this struct */ 50 }; 51 52 struct _GVirConfigDomainDiskDriverClass 53 { 54 GVirConfigObjectClass parent_class; 55 56 gpointer padding[20]; 57 }; 58 59 60 typedef enum { 61 GVIR_CONFIG_DOMAIN_DISK_CACHE_DEFAULT, 62 GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE, 63 GVIR_CONFIG_DOMAIN_DISK_CACHE_WRITETHROUGH, 64 GVIR_CONFIG_DOMAIN_DISK_CACHE_WRITEBACK, 65 GVIR_CONFIG_DOMAIN_DISK_CACHE_DIRECTSYNC, 66 GVIR_CONFIG_DOMAIN_DISK_CACHE_UNSAFE 67 } GVirConfigDomainDiskCacheType; 68 69 70 typedef enum { 71 GVIR_CONFIG_DOMAIN_DISK_FORMAT_RAW, 72 GVIR_CONFIG_DOMAIN_DISK_FORMAT_DIR, 73 GVIR_CONFIG_DOMAIN_DISK_FORMAT_BOCHS, 74 GVIR_CONFIG_DOMAIN_DISK_FORMAT_CLOOP, 75 GVIR_CONFIG_DOMAIN_DISK_FORMAT_COW, 76 GVIR_CONFIG_DOMAIN_DISK_FORMAT_DMG, 77 GVIR_CONFIG_DOMAIN_DISK_FORMAT_ISO, 78 GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW, 79 GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW2, 80 GVIR_CONFIG_DOMAIN_DISK_FORMAT_QED, 81 GVIR_CONFIG_DOMAIN_DISK_FORMAT_VMDK, 82 GVIR_CONFIG_DOMAIN_DISK_FORMAT_VPC, 83 GVIR_CONFIG_DOMAIN_DISK_FORMAT_FAT, 84 GVIR_CONFIG_DOMAIN_DISK_FORMAT_VHD, 85 } GVirConfigDomainDiskFormat; 86 87 88 typedef enum { 89 GVIR_CONFIG_DOMAIN_DISK_DRIVER_ERROR_POLICY_STOP, 90 GVIR_CONFIG_DOMAIN_DISK_DRIVER_ERROR_POLICY_REPORT, 91 GVIR_CONFIG_DOMAIN_DISK_DRIVER_ERROR_POLICY_IGNORE, 92 GVIR_CONFIG_DOMAIN_DISK_DRIVER_ERROR_POLICY_ENOSPACE 93 } GVirConfigDomainDiskDriverErrorPolicy; 94 95 96 typedef enum { 97 GVIR_CONFIG_DOMAIN_DISK_DRIVER_IO_POLICY_THREADS, 98 GVIR_CONFIG_DOMAIN_DISK_DRIVER_IO_POLICY_NATIVE 99 } GVirConfigDomainDiskDriverIoPolicy; 100 101 102 typedef enum { 103 GVIR_CONFIG_DOMAIN_DISK_DRIVER_DISCARD_UNMAP, 104 GVIR_CONFIG_DOMAIN_DISK_DRIVER_DISCARD_IGNORE 105 } GVirConfigDomainDiskDriverDiscard; 106 107 108 GType gvir_config_domain_disk_driver_get_type(void); 109 110 GVirConfigDomainDiskDriver *gvir_config_domain_disk_driver_new(void); 111 GVirConfigDomainDiskDriver *gvir_config_domain_disk_driver_new_from_xml(const gchar *xml, 112 GError **error); 113 114 void gvir_config_domain_disk_driver_set_cache(GVirConfigDomainDiskDriver *driver, 115 GVirConfigDomainDiskCacheType cache_type); 116 GVirConfigDomainDiskCacheType gvir_config_domain_disk_driver_get_cache(GVirConfigDomainDiskDriver *driver); 117 118 void gvir_config_domain_disk_driver_set_name(GVirConfigDomainDiskDriver *driver, 119 const char *name); 120 const char *gvir_config_domain_disk_driver_get_name(GVirConfigDomainDiskDriver *driver); 121 122 void gvir_config_domain_disk_driver_set_error_policy(GVirConfigDomainDiskDriver *driver, 123 GVirConfigDomainDiskDriverErrorPolicy policy); 124 GVirConfigDomainDiskDriverErrorPolicy gvir_config_domain_disk_driver_get_error_policy(GVirConfigDomainDiskDriver *driver); 125 126 void gvir_config_domain_disk_driver_set_format(GVirConfigDomainDiskDriver *driver, 127 GVirConfigDomainDiskFormat format); 128 GVirConfigDomainDiskFormat gvir_config_domain_disk_driver_get_format(GVirConfigDomainDiskDriver *driver); 129 130 void gvir_config_domain_disk_driver_set_io_policy(GVirConfigDomainDiskDriver *driver, 131 GVirConfigDomainDiskDriverIoPolicy policy); 132 GVirConfigDomainDiskDriverIoPolicy gvir_config_domain_disk_driver_get_io_policy(GVirConfigDomainDiskDriver *driver); 133 134 void gvir_config_domain_disk_driver_set_copy_on_read(GVirConfigDomainDiskDriver *driver, 135 gboolean copy_on_read); 136 gboolean gvir_config_domain_disk_driver_get_copy_on_read(GVirConfigDomainDiskDriver *driver); 137 138 void gvir_config_domain_disk_driver_set_discard(GVirConfigDomainDiskDriver *driver, 139 GVirConfigDomainDiskDriverDiscard discard); 140 GVirConfigDomainDiskDriverDiscard gvir_config_domain_disk_driver_get_discard(GVirConfigDomainDiskDriver *driver); 141 142 G_END_DECLS 143 144 #endif /* __LIBVIRT_GCONFIG_DOMAIN_DISK_DRIVER_H__ */ 145