conf: move source pool type to util/

Another struct being moved to util.  This one doesn't have as
much use yet, thankfully.

* src/conf/domain_conf.h (virDomainDiskSourcePoolMode)
(virDomainDiskSourcePoolDef): Move...
* src/util/virstoragefile.h (virStorageSourcePoolMode)
(virStorageSourcePoolDef): ...and rename.
* src/conf/domain_conf.c (virDomainDiskSourcePoolDefFree)
(virDomainDiskSourceDefClear, virDomainDiskSourcePoolDefParse)
(virDomainDiskDefParseXML, virDomainDiskSourceDefParse)
(virDomainDiskSourceDefFormatInternal)
(virDomainDiskDefForeachPath, virDomainDiskSourceIsBlockType):
Adjust clients.
* src/qemu/qemu_conf.c (qemuTranslateDiskSourcePool): Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.

Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Eric Blake 2014-03-27 22:33:45 -06:00
parent 8fc328592c
commit b6edf2bfb4
6 changed files with 59 additions and 54 deletions

View File

@ -763,11 +763,6 @@ VIR_ENUM_IMPL(virDomainDiskDiscard, VIR_DOMAIN_DISK_DISCARD_LAST,
"default",
"unmap",
"ignore")
VIR_ENUM_IMPL(virDomainDiskSourcePoolMode,
VIR_DOMAIN_DISK_SOURCE_POOL_MODE_LAST,
"default",
"host",
"direct")
#define VIR_DOMAIN_XML_WRITE_FLAGS VIR_DOMAIN_XML_SECURE
#define VIR_DOMAIN_XML_READ_FLAGS VIR_DOMAIN_XML_INACTIVE
@ -1190,7 +1185,7 @@ void virDomainLeaseDefFree(virDomainLeaseDefPtr def)
}
static void
virDomainDiskSourcePoolDefFree(virDomainDiskSourcePoolDefPtr def)
virDomainDiskSourcePoolDefFree(virStorageSourcePoolDefPtr def)
{
if (!def)
return;
@ -4964,10 +4959,10 @@ virDomainLeaseDefParseXML(xmlNodePtr node)
static int
virDomainDiskSourcePoolDefParse(xmlNodePtr node,
virDomainDiskSourcePoolDefPtr *srcpool)
virStorageSourcePoolDefPtr *srcpool)
{
char *mode = NULL;
virDomainDiskSourcePoolDefPtr source;
virStorageSourcePoolDefPtr source;
int ret = -1;
*srcpool = NULL;
@ -4993,7 +4988,7 @@ virDomainDiskSourcePoolDefParse(xmlNodePtr node,
}
if (mode &&
(source->mode = virDomainDiskSourcePoolModeTypeFromString(mode)) <= 0) {
(source->mode = virStorageSourcePoolModeTypeFromString(mode)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown source mode '%s' for volume type disk"),
mode);
@ -5018,7 +5013,7 @@ virDomainDiskSourceDefParse(xmlNodePtr node,
int *proto,
size_t *nhosts,
virStorageNetHostDefPtr *hosts,
virDomainDiskSourcePoolDefPtr *srcpool)
virStorageSourcePoolDefPtr *srcpool)
{
char *protocol = NULL;
char *transport = NULL;
@ -14761,7 +14756,7 @@ virDomainDiskSourceDefFormatInternal(virBufferPtr buf,
virStorageNetHostDefPtr hosts,
size_t nseclabels,
virSecurityDeviceLabelDefPtr *seclabels,
virDomainDiskSourcePoolDefPtr srcpool,
virStorageSourcePoolDefPtr srcpool,
unsigned int flags)
{
size_t n;
@ -14831,7 +14826,7 @@ virDomainDiskSourceDefFormatInternal(virBufferPtr buf,
srcpool->pool, srcpool->volume);
if (srcpool->mode)
virBufferAsprintf(buf, " mode='%s'",
virDomainDiskSourcePoolModeTypeToString(srcpool->mode));
virStorageSourcePoolModeTypeToString(srcpool->mode));
}
virBufferEscapeString(buf, " startupPolicy='%s'", startupPolicy);
@ -18530,7 +18525,7 @@ virDomainDiskDefForeachPath(virDomainDiskDefPtr disk,
if (!path || type == VIR_STORAGE_TYPE_NETWORK ||
(type == VIR_STORAGE_TYPE_VOLUME &&
disk->src.srcpool &&
disk->src.srcpool->mode == VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DIRECT))
disk->src.srcpool->mode == VIR_STORAGE_SOURCE_POOL_MODE_DIRECT))
return 0;
if (iter(disk, path, 0, opaque) < 0)
@ -19392,7 +19387,7 @@ virDomainDiskSourceIsBlockType(virDomainDiskDefPtr def)
* (e.g. set sgio=filtered|unfiltered for it) in libvirt.
*/
if (def->src.srcpool->pooltype == VIR_STORAGE_POOL_ISCSI &&
def->src.srcpool->mode == VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DIRECT)
def->src.srcpool->mode == VIR_STORAGE_SOURCE_POOL_MODE_DIRECT)
return false;
return true;

View File

@ -602,37 +602,6 @@ struct _virDomainBlockIoTuneInfo {
};
typedef virDomainBlockIoTuneInfo *virDomainBlockIoTuneInfoPtr;
/*
* Used for volume "type" disk to indicate how to represent
* the disk source if the specified "pool" is of iscsi type.
*/
enum virDomainDiskSourcePoolMode {
VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DEFAULT = 0,
/* Use the path as it shows up on host, e.g.
* /dev/disk/by-path/ip-$ip-iscsi-$iqn:iscsi.iscsi-pool0-lun-1
*/
VIR_DOMAIN_DISK_SOURCE_POOL_MODE_HOST,
/* Use the URI from the storage pool source element host attribute. E.g.
* file=iscsi://demo.org:6000/iqn.1992-01.com.example/1.
*/
VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DIRECT,
VIR_DOMAIN_DISK_SOURCE_POOL_MODE_LAST
};
typedef struct _virDomainDiskSourcePoolDef virDomainDiskSourcePoolDef;
struct _virDomainDiskSourcePoolDef {
char *pool; /* pool name */
char *volume; /* volume name */
int voltype; /* enum virStorageVolType, internal only */
int pooltype; /* enum virStoragePoolType, internal only */
int actualtype; /* enum virStorageType, internal only */
int mode; /* enum virDomainDiskSourcePoolMode */
};
typedef virDomainDiskSourcePoolDef *virDomainDiskSourcePoolDefPtr;
typedef struct _virDomainDiskSourceDef virDomainDiskSourceDef;
typedef virDomainDiskSourceDef *virDomainDiskSourceDefPtr;
@ -645,7 +614,7 @@ struct _virDomainDiskSourceDef {
int protocol; /* enum virStorageNetProtocol */
size_t nhosts;
virStorageNetHostDefPtr hosts;
virDomainDiskSourcePoolDefPtr srcpool;
virStorageSourcePoolDefPtr srcpool;
struct {
char *username;
int secretType; /* enum virDomainDiskSecretType */
@ -2347,7 +2316,7 @@ int virDomainDiskSourceDefFormatInternal(virBufferPtr buf,
virStorageNetHostDefPtr hosts,
size_t nseclabels,
virSecurityDeviceLabelDefPtr *seclabels,
virDomainDiskSourcePoolDefPtr srcpool,
virStorageSourcePoolDefPtr srcpool,
unsigned int flags);
int virDomainNetDefFormat(virBufferPtr buf,
@ -2401,7 +2370,7 @@ int virDomainDiskSourceDefParse(xmlNodePtr node,
int *proto,
size_t *nhosts,
virStorageNetHostDefPtr *hosts,
virDomainDiskSourcePoolDefPtr *srcpool);
virStorageSourcePoolDefPtr *srcpool);
bool virDomainHasDiskMirror(virDomainObjPtr vm);
@ -2623,7 +2592,6 @@ VIR_ENUM_DECL(virDomainDiskSecretType)
VIR_ENUM_DECL(virDomainDeviceSGIO)
VIR_ENUM_DECL(virDomainDiskTray)
VIR_ENUM_DECL(virDomainDiskDiscard)
VIR_ENUM_DECL(virDomainDiskSourcePoolMode)
VIR_ENUM_DECL(virDomainIoEventFd)
VIR_ENUM_DECL(virDomainVirtioEventIdx)
VIR_ENUM_DECL(virDomainDiskCopyOnRead)

View File

@ -1840,6 +1840,8 @@ virStorageNetHostDefFree;
virStorageNetHostTransportTypeFromString;
virStorageNetHostTransportTypeToString;
virStorageNetProtocolTypeToString;
virStorageSourcePoolModeTypeFromString;
virStorageSourcePoolModeTypeToString;
virStorageTypeFromString;
virStorageTypeToString;

View File

@ -1364,17 +1364,17 @@ qemuTranslateDiskSourcePool(virConnectPtr conn,
}
switch (def->src.srcpool->mode) {
case VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DEFAULT:
case VIR_DOMAIN_DISK_SOURCE_POOL_MODE_LAST:
def->src.srcpool->mode = VIR_DOMAIN_DISK_SOURCE_POOL_MODE_HOST;
case VIR_STORAGE_SOURCE_POOL_MODE_DEFAULT:
case VIR_STORAGE_SOURCE_POOL_MODE_LAST:
def->src.srcpool->mode = VIR_STORAGE_SOURCE_POOL_MODE_HOST;
/* fallthrough */
case VIR_DOMAIN_DISK_SOURCE_POOL_MODE_HOST:
case VIR_STORAGE_SOURCE_POOL_MODE_HOST:
def->src.srcpool->actualtype = VIR_STORAGE_TYPE_BLOCK;
if (!(def->src.path = virStorageVolGetPath(vol)))
goto cleanup;
break;
case VIR_DOMAIN_DISK_SOURCE_POOL_MODE_DIRECT:
case VIR_STORAGE_SOURCE_POOL_MODE_DIRECT:
def->src.srcpool->actualtype = VIR_STORAGE_TYPE_NETWORK;
def->src.protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI;

View File

@ -90,6 +90,11 @@ VIR_ENUM_IMPL(virStorageNetHostTransport, VIR_STORAGE_NET_HOST_TRANS_LAST,
"unix",
"rdma")
VIR_ENUM_IMPL(virStorageSourcePoolMode,
VIR_STORAGE_SOURCE_POOL_MODE_LAST,
"default",
"host",
"direct")
enum lv_endian {
LV_LITTLE_ENDIAN = 1, /* 1234 */

View File

@ -137,6 +137,41 @@ struct _virStorageNetHostDef {
char *socket; /* path to unix socket */
};
/* Information for a storage volume from a virStoragePool */
/*
* Used for volume "type" disk to indicate how to represent
* the disk source if the specified "pool" is of iscsi type.
*/
enum virStorageSourcePoolMode {
VIR_STORAGE_SOURCE_POOL_MODE_DEFAULT = 0,
/* Use the path as it shows up on host, e.g.
* /dev/disk/by-path/ip-$ip-iscsi-$iqn:iscsi.iscsi-pool0-lun-1
*/
VIR_STORAGE_SOURCE_POOL_MODE_HOST,
/* Use the URI from the storage pool source element host attribute. E.g.
* file=iscsi://demo.org:6000/iqn.1992-01.com.example/1.
*/
VIR_STORAGE_SOURCE_POOL_MODE_DIRECT,
VIR_STORAGE_SOURCE_POOL_MODE_LAST
};
VIR_ENUM_DECL(virStorageSourcePoolMode)
typedef struct _virStorageSourcePoolDef virStorageSourcePoolDef;
struct _virStorageSourcePoolDef {
char *pool; /* pool name */
char *volume; /* volume name */
int voltype; /* enum virStorageVolType, internal only */
int pooltype; /* enum virStoragePoolType, internal only */
int actualtype; /* enum virStorageType, internal only */
int mode; /* enum virStorageSourcePoolMode */
};
typedef virStorageSourcePoolDef *virStorageSourcePoolDefPtr;
# ifndef DEV_BSIZE
# define DEV_BSIZE 512