2009-09-25 13:20:13 +00:00
|
|
|
/*
|
2012-12-13 15:25:48 +00:00
|
|
|
* virstoragefile.h: file utility functions for FS storage backend
|
2009-09-25 13:20:13 +00:00
|
|
|
*
|
2016-05-28 12:43:23 +00:00
|
|
|
* Copyright (C) 2007-2009, 2012-2016 Red Hat, Inc.
|
2009-09-25 13:20:13 +00:00
|
|
|
* Copyright (C) 2007-2008 Daniel P. Berrange
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2012-09-20 22:30:55 +00:00
|
|
|
* License along with this library. If not, see
|
2012-07-21 10:06:23 +00:00
|
|
|
* <http://www.gnu.org/licenses/>.
|
2009-09-25 13:20:13 +00:00
|
|
|
*
|
|
|
|
* Author: Daniel P. Berrange <berrange@redhat.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __VIR_STORAGE_FILE_H__
|
2010-03-09 18:22:22 +00:00
|
|
|
# define __VIR_STORAGE_FILE_H__
|
2009-09-25 13:20:13 +00:00
|
|
|
|
2016-12-01 21:19:26 +00:00
|
|
|
# include <sys/stat.h>
|
|
|
|
|
2013-05-07 15:27:43 +00:00
|
|
|
# include "virbitmap.h"
|
2014-03-28 18:38:43 +00:00
|
|
|
# include "virseclabel.h"
|
|
|
|
# include "virstorageencryption.h"
|
2012-12-13 17:44:57 +00:00
|
|
|
# include "virutil.h"
|
2016-05-28 12:43:23 +00:00
|
|
|
# include "virsecret.h"
|
2009-09-25 13:20:13 +00:00
|
|
|
|
2013-11-05 21:12:02 +00:00
|
|
|
/* Minimum header size required to probe all known formats with
|
|
|
|
* virStorageFileProbeFormat, or obtain metadata from a known format.
|
|
|
|
* Rounded to multiple of 512 (ISO has a 5-byte magic at offset
|
|
|
|
* 32769). Some formats can be probed with fewer bytes. Although
|
|
|
|
* some formats theoretically permit metadata that can rely on offsets
|
|
|
|
* beyond this size, in practice that doesn't matter. */
|
|
|
|
# define VIR_STORAGE_MAX_HEADER 0x8200
|
|
|
|
|
conf: move host disk type to util/
A continuation of the migration of disk details to virstoragefile.
This patch moves a single enum, but converting the name has quite
a bit of fallout.
* src/conf/domain_conf.h (virDomainDiskType): Move...
* src/util/virstoragefile.h (virStorageType): ...and rename.
* src/bhyve/bhyve_command.c (bhyveBuildDiskArgStr)
(virBhyveProcessBuildLoadCmd): Update clients.
* src/conf/domain_conf.c (virDomainDiskSourceDefParse)
(virDomainDiskDefParseXML, virDomainDiskSourceDefFormatInternal)
(virDomainDiskDefFormat, virDomainDiskGetActualType)
(virDomainDiskDefForeachPath, virDomainDiskSourceIsBlockType):
Likewise.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefParseXML)
(virDomainSnapshotAlignDisks, virDomainSnapshotDiskDefFormat):
Likewise.
* src/esx/esx_driver.c (esxAutodetectSCSIControllerModel)
(esxDomainDefineXML): Likewise.
* src/locking/domain_lock.c (virDomainLockManagerAddDisk):
Likewise.
* src/lxc/lxc_controller.c
(virLXCControllerSetupLoopDeviceDisk)
(virLXCControllerSetupNBDDeviceDisk)
(virLXCControllerSetupLoopDevices, virLXCControllerSetupDisk):
Likewise.
* src/parallels/parallels_driver.c (parallelsGetHddInfo):
Likewise.
* src/phyp/phyp_driver.c (phypDiskType): Likewise.
* src/qemu/qemu_command.c (qemuGetDriveSourceString)
(qemuDomainDiskGetSourceString, qemuBuildDriveStr)
(qemuBuildCommandLine, qemuParseCommandLineDisk)
(qemuParseCommandLine): Likewise.
* src/qemu/qemu_conf.c (qemuCheckSharedDevice)
(qemuTranslateDiskSourcePool)
(qemuTranslateSnapshotDiskSourcePool): Likewise.
* src/qemu/qemu_domain.c (qemuDomainDeviceDefPostParse)
(qemuDomainDetermineDiskChain): Likewise.
* src/qemu/qemu_driver.c (qemuDomainGetBlockInfo)
(qemuDomainSnapshotPrepareDiskExternalBackingInactive)
(qemuDomainSnapshotPrepareDiskExternalBackingActive)
(qemuDomainSnapshotPrepareDiskExternalOverlayActive)
(qemuDomainSnapshotPrepareDiskExternalOverlayInactive)
(qemuDomainSnapshotPrepareDiskInternal)
(qemuDomainSnapshotPrepare)
(qemuDomainSnapshotCreateSingleDiskActive): Likewise.
* src/qemu/qemu_hotplug.c (qemuDomainChangeEjectableMedia):
Likewise.
* src/qemu/qemu_migration.c (qemuMigrationIsSafe): Likewise.
* src/security/security_apparmor.c
(AppArmorRestoreSecurityImageLabel)
(AppArmorSetSecurityImageLabel): Likewise.
* src/security/security_dac.c (virSecurityDACSetSecurityImageLabel)
(virSecurityDACRestoreSecurityImageLabelInt)
(virSecurityDACSetSecurityAllLabel): Likewise.
* src/security/security_selinux.c
(virSecuritySELinuxRestoreSecurityImageLabelInt)
(virSecuritySELinuxSetSecurityImageLabel)
(virSecuritySELinuxSetSecurityAllLabel): Likewise.
* src/storage/storage_backend.c (virStorageFileBackendForType):
Likewise.
* src/storage/storage_backend_fs.c (virStorageFileBackendFile)
(virStorageFileBackendBlock): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGluster): Likewise.
* src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc, vboxAttachDrives)
(vboxDomainAttachDeviceImpl, vboxDomainDetachDevice): Likewise.
* src/vmware/vmware_conf.c (vmwareVmxPath): Likewise.
* src/vmx/vmx.c (virVMXParseDisk, virVMXFormatDisk)
(virVMXFormatFloppy): Likewise.
* src/xenxs/xen_sxpr.c (xenParseSxprDisks, xenParseSxpr)
(xenFormatSxprDisk): Likewise.
* src/xenxs/xen_xm.c (xenParseXM, xenFormatXMDisk): Likewise.
* tests/securityselinuxlabeltest.c (testSELinuxLoadDef):
Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-27 21:57:49 +00:00
|
|
|
|
2014-04-02 19:01:46 +00:00
|
|
|
/* Types of disk backends (host resource). Comparable to the public
|
|
|
|
* virStorageVolType, except we have an undetermined state, don't have
|
|
|
|
* a netdir type, and add a volume type for reference through a
|
|
|
|
* storage pool. */
|
2014-04-27 00:15:22 +00:00
|
|
|
typedef enum {
|
2014-04-02 19:01:46 +00:00
|
|
|
VIR_STORAGE_TYPE_NONE,
|
conf: move host disk type to util/
A continuation of the migration of disk details to virstoragefile.
This patch moves a single enum, but converting the name has quite
a bit of fallout.
* src/conf/domain_conf.h (virDomainDiskType): Move...
* src/util/virstoragefile.h (virStorageType): ...and rename.
* src/bhyve/bhyve_command.c (bhyveBuildDiskArgStr)
(virBhyveProcessBuildLoadCmd): Update clients.
* src/conf/domain_conf.c (virDomainDiskSourceDefParse)
(virDomainDiskDefParseXML, virDomainDiskSourceDefFormatInternal)
(virDomainDiskDefFormat, virDomainDiskGetActualType)
(virDomainDiskDefForeachPath, virDomainDiskSourceIsBlockType):
Likewise.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefParseXML)
(virDomainSnapshotAlignDisks, virDomainSnapshotDiskDefFormat):
Likewise.
* src/esx/esx_driver.c (esxAutodetectSCSIControllerModel)
(esxDomainDefineXML): Likewise.
* src/locking/domain_lock.c (virDomainLockManagerAddDisk):
Likewise.
* src/lxc/lxc_controller.c
(virLXCControllerSetupLoopDeviceDisk)
(virLXCControllerSetupNBDDeviceDisk)
(virLXCControllerSetupLoopDevices, virLXCControllerSetupDisk):
Likewise.
* src/parallels/parallels_driver.c (parallelsGetHddInfo):
Likewise.
* src/phyp/phyp_driver.c (phypDiskType): Likewise.
* src/qemu/qemu_command.c (qemuGetDriveSourceString)
(qemuDomainDiskGetSourceString, qemuBuildDriveStr)
(qemuBuildCommandLine, qemuParseCommandLineDisk)
(qemuParseCommandLine): Likewise.
* src/qemu/qemu_conf.c (qemuCheckSharedDevice)
(qemuTranslateDiskSourcePool)
(qemuTranslateSnapshotDiskSourcePool): Likewise.
* src/qemu/qemu_domain.c (qemuDomainDeviceDefPostParse)
(qemuDomainDetermineDiskChain): Likewise.
* src/qemu/qemu_driver.c (qemuDomainGetBlockInfo)
(qemuDomainSnapshotPrepareDiskExternalBackingInactive)
(qemuDomainSnapshotPrepareDiskExternalBackingActive)
(qemuDomainSnapshotPrepareDiskExternalOverlayActive)
(qemuDomainSnapshotPrepareDiskExternalOverlayInactive)
(qemuDomainSnapshotPrepareDiskInternal)
(qemuDomainSnapshotPrepare)
(qemuDomainSnapshotCreateSingleDiskActive): Likewise.
* src/qemu/qemu_hotplug.c (qemuDomainChangeEjectableMedia):
Likewise.
* src/qemu/qemu_migration.c (qemuMigrationIsSafe): Likewise.
* src/security/security_apparmor.c
(AppArmorRestoreSecurityImageLabel)
(AppArmorSetSecurityImageLabel): Likewise.
* src/security/security_dac.c (virSecurityDACSetSecurityImageLabel)
(virSecurityDACRestoreSecurityImageLabelInt)
(virSecurityDACSetSecurityAllLabel): Likewise.
* src/security/security_selinux.c
(virSecuritySELinuxRestoreSecurityImageLabelInt)
(virSecuritySELinuxSetSecurityImageLabel)
(virSecuritySELinuxSetSecurityAllLabel): Likewise.
* src/storage/storage_backend.c (virStorageFileBackendForType):
Likewise.
* src/storage/storage_backend_fs.c (virStorageFileBackendFile)
(virStorageFileBackendBlock): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGluster): Likewise.
* src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc, vboxAttachDrives)
(vboxDomainAttachDeviceImpl, vboxDomainDetachDevice): Likewise.
* src/vmware/vmware_conf.c (vmwareVmxPath): Likewise.
* src/vmx/vmx.c (virVMXParseDisk, virVMXFormatDisk)
(virVMXFormatFloppy): Likewise.
* src/xenxs/xen_sxpr.c (xenParseSxprDisks, xenParseSxpr)
(xenFormatSxprDisk): Likewise.
* src/xenxs/xen_xm.c (xenParseXM, xenFormatXMDisk): Likewise.
* tests/securityselinuxlabeltest.c (testSELinuxLoadDef):
Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-27 21:57:49 +00:00
|
|
|
VIR_STORAGE_TYPE_FILE,
|
2014-04-02 19:01:46 +00:00
|
|
|
VIR_STORAGE_TYPE_BLOCK,
|
conf: move host disk type to util/
A continuation of the migration of disk details to virstoragefile.
This patch moves a single enum, but converting the name has quite
a bit of fallout.
* src/conf/domain_conf.h (virDomainDiskType): Move...
* src/util/virstoragefile.h (virStorageType): ...and rename.
* src/bhyve/bhyve_command.c (bhyveBuildDiskArgStr)
(virBhyveProcessBuildLoadCmd): Update clients.
* src/conf/domain_conf.c (virDomainDiskSourceDefParse)
(virDomainDiskDefParseXML, virDomainDiskSourceDefFormatInternal)
(virDomainDiskDefFormat, virDomainDiskGetActualType)
(virDomainDiskDefForeachPath, virDomainDiskSourceIsBlockType):
Likewise.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefParseXML)
(virDomainSnapshotAlignDisks, virDomainSnapshotDiskDefFormat):
Likewise.
* src/esx/esx_driver.c (esxAutodetectSCSIControllerModel)
(esxDomainDefineXML): Likewise.
* src/locking/domain_lock.c (virDomainLockManagerAddDisk):
Likewise.
* src/lxc/lxc_controller.c
(virLXCControllerSetupLoopDeviceDisk)
(virLXCControllerSetupNBDDeviceDisk)
(virLXCControllerSetupLoopDevices, virLXCControllerSetupDisk):
Likewise.
* src/parallels/parallels_driver.c (parallelsGetHddInfo):
Likewise.
* src/phyp/phyp_driver.c (phypDiskType): Likewise.
* src/qemu/qemu_command.c (qemuGetDriveSourceString)
(qemuDomainDiskGetSourceString, qemuBuildDriveStr)
(qemuBuildCommandLine, qemuParseCommandLineDisk)
(qemuParseCommandLine): Likewise.
* src/qemu/qemu_conf.c (qemuCheckSharedDevice)
(qemuTranslateDiskSourcePool)
(qemuTranslateSnapshotDiskSourcePool): Likewise.
* src/qemu/qemu_domain.c (qemuDomainDeviceDefPostParse)
(qemuDomainDetermineDiskChain): Likewise.
* src/qemu/qemu_driver.c (qemuDomainGetBlockInfo)
(qemuDomainSnapshotPrepareDiskExternalBackingInactive)
(qemuDomainSnapshotPrepareDiskExternalBackingActive)
(qemuDomainSnapshotPrepareDiskExternalOverlayActive)
(qemuDomainSnapshotPrepareDiskExternalOverlayInactive)
(qemuDomainSnapshotPrepareDiskInternal)
(qemuDomainSnapshotPrepare)
(qemuDomainSnapshotCreateSingleDiskActive): Likewise.
* src/qemu/qemu_hotplug.c (qemuDomainChangeEjectableMedia):
Likewise.
* src/qemu/qemu_migration.c (qemuMigrationIsSafe): Likewise.
* src/security/security_apparmor.c
(AppArmorRestoreSecurityImageLabel)
(AppArmorSetSecurityImageLabel): Likewise.
* src/security/security_dac.c (virSecurityDACSetSecurityImageLabel)
(virSecurityDACRestoreSecurityImageLabelInt)
(virSecurityDACSetSecurityAllLabel): Likewise.
* src/security/security_selinux.c
(virSecuritySELinuxRestoreSecurityImageLabelInt)
(virSecuritySELinuxSetSecurityImageLabel)
(virSecuritySELinuxSetSecurityAllLabel): Likewise.
* src/storage/storage_backend.c (virStorageFileBackendForType):
Likewise.
* src/storage/storage_backend_fs.c (virStorageFileBackendFile)
(virStorageFileBackendBlock): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGluster): Likewise.
* src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc, vboxAttachDrives)
(vboxDomainAttachDeviceImpl, vboxDomainDetachDevice): Likewise.
* src/vmware/vmware_conf.c (vmwareVmxPath): Likewise.
* src/vmx/vmx.c (virVMXParseDisk, virVMXFormatDisk)
(virVMXFormatFloppy): Likewise.
* src/xenxs/xen_sxpr.c (xenParseSxprDisks, xenParseSxpr)
(xenFormatSxprDisk): Likewise.
* src/xenxs/xen_xm.c (xenParseXM, xenFormatXMDisk): Likewise.
* tests/securityselinuxlabeltest.c (testSELinuxLoadDef):
Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-27 21:57:49 +00:00
|
|
|
VIR_STORAGE_TYPE_DIR,
|
|
|
|
VIR_STORAGE_TYPE_NETWORK,
|
|
|
|
VIR_STORAGE_TYPE_VOLUME,
|
|
|
|
|
|
|
|
VIR_STORAGE_TYPE_LAST
|
2014-04-27 00:15:22 +00:00
|
|
|
} virStorageType;
|
conf: move host disk type to util/
A continuation of the migration of disk details to virstoragefile.
This patch moves a single enum, but converting the name has quite
a bit of fallout.
* src/conf/domain_conf.h (virDomainDiskType): Move...
* src/util/virstoragefile.h (virStorageType): ...and rename.
* src/bhyve/bhyve_command.c (bhyveBuildDiskArgStr)
(virBhyveProcessBuildLoadCmd): Update clients.
* src/conf/domain_conf.c (virDomainDiskSourceDefParse)
(virDomainDiskDefParseXML, virDomainDiskSourceDefFormatInternal)
(virDomainDiskDefFormat, virDomainDiskGetActualType)
(virDomainDiskDefForeachPath, virDomainDiskSourceIsBlockType):
Likewise.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefParseXML)
(virDomainSnapshotAlignDisks, virDomainSnapshotDiskDefFormat):
Likewise.
* src/esx/esx_driver.c (esxAutodetectSCSIControllerModel)
(esxDomainDefineXML): Likewise.
* src/locking/domain_lock.c (virDomainLockManagerAddDisk):
Likewise.
* src/lxc/lxc_controller.c
(virLXCControllerSetupLoopDeviceDisk)
(virLXCControllerSetupNBDDeviceDisk)
(virLXCControllerSetupLoopDevices, virLXCControllerSetupDisk):
Likewise.
* src/parallels/parallels_driver.c (parallelsGetHddInfo):
Likewise.
* src/phyp/phyp_driver.c (phypDiskType): Likewise.
* src/qemu/qemu_command.c (qemuGetDriveSourceString)
(qemuDomainDiskGetSourceString, qemuBuildDriveStr)
(qemuBuildCommandLine, qemuParseCommandLineDisk)
(qemuParseCommandLine): Likewise.
* src/qemu/qemu_conf.c (qemuCheckSharedDevice)
(qemuTranslateDiskSourcePool)
(qemuTranslateSnapshotDiskSourcePool): Likewise.
* src/qemu/qemu_domain.c (qemuDomainDeviceDefPostParse)
(qemuDomainDetermineDiskChain): Likewise.
* src/qemu/qemu_driver.c (qemuDomainGetBlockInfo)
(qemuDomainSnapshotPrepareDiskExternalBackingInactive)
(qemuDomainSnapshotPrepareDiskExternalBackingActive)
(qemuDomainSnapshotPrepareDiskExternalOverlayActive)
(qemuDomainSnapshotPrepareDiskExternalOverlayInactive)
(qemuDomainSnapshotPrepareDiskInternal)
(qemuDomainSnapshotPrepare)
(qemuDomainSnapshotCreateSingleDiskActive): Likewise.
* src/qemu/qemu_hotplug.c (qemuDomainChangeEjectableMedia):
Likewise.
* src/qemu/qemu_migration.c (qemuMigrationIsSafe): Likewise.
* src/security/security_apparmor.c
(AppArmorRestoreSecurityImageLabel)
(AppArmorSetSecurityImageLabel): Likewise.
* src/security/security_dac.c (virSecurityDACSetSecurityImageLabel)
(virSecurityDACRestoreSecurityImageLabelInt)
(virSecurityDACSetSecurityAllLabel): Likewise.
* src/security/security_selinux.c
(virSecuritySELinuxRestoreSecurityImageLabelInt)
(virSecuritySELinuxSetSecurityImageLabel)
(virSecuritySELinuxSetSecurityAllLabel): Likewise.
* src/storage/storage_backend.c (virStorageFileBackendForType):
Likewise.
* src/storage/storage_backend_fs.c (virStorageFileBackendFile)
(virStorageFileBackendBlock): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGluster): Likewise.
* src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc, vboxAttachDrives)
(vboxDomainAttachDeviceImpl, vboxDomainDetachDevice): Likewise.
* src/vmware/vmware_conf.c (vmwareVmxPath): Likewise.
* src/vmx/vmx.c (virVMXParseDisk, virVMXFormatDisk)
(virVMXFormatFloppy): Likewise.
* src/xenxs/xen_sxpr.c (xenParseSxprDisks, xenParseSxpr)
(xenFormatSxprDisk): Likewise.
* src/xenxs/xen_xm.c (xenParseXM, xenFormatXMDisk): Likewise.
* tests/securityselinuxlabeltest.c (testSELinuxLoadDef):
Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-27 21:57:49 +00:00
|
|
|
|
|
|
|
VIR_ENUM_DECL(virStorage)
|
|
|
|
|
|
|
|
|
2014-04-27 00:15:22 +00:00
|
|
|
typedef enum {
|
2010-11-22 20:08:17 +00:00
|
|
|
VIR_STORAGE_FILE_AUTO_SAFE = -2,
|
2010-06-14 14:53:59 +00:00
|
|
|
VIR_STORAGE_FILE_AUTO = -1,
|
storage: list more file types
When an image has no backing file, using VIR_STORAGE_FILE_AUTO
for its type is a bit confusing. Additionally, a future patch
would like to reserve a default value for the case of no file
type specified in the XML, but different from the current use
of -1 to imply probing, since probing is not always safe.
Also, a couple of file types were missing compared to supported
code: libxl supports 'vhd', and qemu supports 'fat' for directories
passed through as a file system.
* src/util/storage_file.h (virStorageFileFormat): Add
VIR_STORAGE_FILE_NONE, VIR_STORAGE_FILE_FAT, VIR_STORAGE_FILE_VHD.
* src/util/storage_file.c (virStorageFileMatchesVersion): Match
documentation when version probing not supported.
(cowGetBackingStore, qcowXGetBackingStore, qcow1GetBackingStore)
(qcow2GetBackingStoreFormat, qedGetBackingStore)
(virStorageFileGetMetadataFromBuf)
(virStorageFileGetMetadataFromFD): Take NONE into account.
* src/conf/domain_conf.c (virDomainDiskDefForeachPath): Likewise.
* src/qemu/qemu_driver.c (qemuDomainGetBlockInfo): Likewise.
* src/conf/storage_conf.c (virStorageVolumeFormatFromString): New
function.
(poolTypeInfo): Use it.
2012-09-28 17:11:07 +00:00
|
|
|
VIR_STORAGE_FILE_NONE = 0,
|
|
|
|
VIR_STORAGE_FILE_RAW,
|
2009-09-25 13:20:13 +00:00
|
|
|
VIR_STORAGE_FILE_DIR,
|
|
|
|
VIR_STORAGE_FILE_BOCHS,
|
|
|
|
VIR_STORAGE_FILE_CLOOP,
|
|
|
|
VIR_STORAGE_FILE_DMG,
|
|
|
|
VIR_STORAGE_FILE_ISO,
|
2014-04-14 22:54:14 +00:00
|
|
|
VIR_STORAGE_FILE_VPC,
|
|
|
|
VIR_STORAGE_FILE_VDI,
|
|
|
|
|
|
|
|
/* Not direct file formats, but used for various drivers */
|
|
|
|
VIR_STORAGE_FILE_FAT,
|
|
|
|
VIR_STORAGE_FILE_VHD,
|
2014-05-07 18:04:06 +00:00
|
|
|
VIR_STORAGE_FILE_PLOOP,
|
2014-04-14 22:54:14 +00:00
|
|
|
|
|
|
|
/* Not a format, but a marker: all formats below this point have
|
|
|
|
* libvirt support for following a backing chain */
|
|
|
|
VIR_STORAGE_FILE_BACKING,
|
|
|
|
|
|
|
|
VIR_STORAGE_FILE_COW = VIR_STORAGE_FILE_BACKING,
|
2009-09-25 13:20:13 +00:00
|
|
|
VIR_STORAGE_FILE_QCOW,
|
|
|
|
VIR_STORAGE_FILE_QCOW2,
|
2010-11-19 16:18:16 +00:00
|
|
|
VIR_STORAGE_FILE_QED,
|
2009-09-25 13:20:13 +00:00
|
|
|
VIR_STORAGE_FILE_VMDK,
|
storage: list more file types
When an image has no backing file, using VIR_STORAGE_FILE_AUTO
for its type is a bit confusing. Additionally, a future patch
would like to reserve a default value for the case of no file
type specified in the XML, but different from the current use
of -1 to imply probing, since probing is not always safe.
Also, a couple of file types were missing compared to supported
code: libxl supports 'vhd', and qemu supports 'fat' for directories
passed through as a file system.
* src/util/storage_file.h (virStorageFileFormat): Add
VIR_STORAGE_FILE_NONE, VIR_STORAGE_FILE_FAT, VIR_STORAGE_FILE_VHD.
* src/util/storage_file.c (virStorageFileMatchesVersion): Match
documentation when version probing not supported.
(cowGetBackingStore, qcowXGetBackingStore, qcow1GetBackingStore)
(qcow2GetBackingStoreFormat, qedGetBackingStore)
(virStorageFileGetMetadataFromBuf)
(virStorageFileGetMetadataFromFD): Take NONE into account.
* src/conf/domain_conf.c (virDomainDiskDefForeachPath): Likewise.
* src/qemu/qemu_driver.c (qemuDomainGetBlockInfo): Likewise.
* src/conf/storage_conf.c (virStorageVolumeFormatFromString): New
function.
(poolTypeInfo): Use it.
2012-09-28 17:11:07 +00:00
|
|
|
|
2009-09-25 13:20:13 +00:00
|
|
|
VIR_STORAGE_FILE_LAST,
|
2014-04-27 00:15:22 +00:00
|
|
|
} virStorageFileFormat;
|
2009-09-25 13:20:13 +00:00
|
|
|
|
|
|
|
VIR_ENUM_DECL(virStorageFileFormat);
|
|
|
|
|
2014-04-27 00:15:22 +00:00
|
|
|
typedef enum {
|
2013-06-24 06:35:59 +00:00
|
|
|
VIR_STORAGE_FILE_FEATURE_LAZY_REFCOUNTS = 0,
|
2013-05-07 15:27:43 +00:00
|
|
|
|
|
|
|
VIR_STORAGE_FILE_FEATURE_LAST
|
2014-04-27 00:15:22 +00:00
|
|
|
} virStorageFileFeature;
|
2013-05-07 15:27:43 +00:00
|
|
|
|
|
|
|
VIR_ENUM_DECL(virStorageFileFeature);
|
|
|
|
|
2014-03-30 03:21:06 +00:00
|
|
|
typedef struct _virStoragePerms virStoragePerms;
|
|
|
|
typedef virStoragePerms *virStoragePermsPtr;
|
|
|
|
struct _virStoragePerms {
|
|
|
|
mode_t mode;
|
|
|
|
uid_t uid;
|
|
|
|
gid_t gid;
|
|
|
|
char *label;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct _virStorageTimestamps virStorageTimestamps;
|
|
|
|
typedef virStorageTimestamps *virStorageTimestampsPtr;
|
|
|
|
struct _virStorageTimestamps {
|
|
|
|
struct timespec atime;
|
|
|
|
struct timespec btime; /* birth time unknown if btime.tv_nsec == -1 */
|
|
|
|
struct timespec ctime;
|
|
|
|
struct timespec mtime;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
conf: split network host structs to util/
Continuing the refactoring of host-side storage descriptions out
of conf/domain_conf and into util/virstoragefile, this patch
focuses on details about a host name/port/transport as used by
a network storage volume.
* src/conf/domain_conf.h (virDomainDiskProtocolTransport)
(virDomainDiskHostDef, virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): Move...
* src/util/virstoragefile.h (virStorageNetHostTransport)
(virStorageNetHostDef, virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): ...here,
with better names.
* src/util/virstoragefile.c (virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): Moved from...
* src/conf/domain_conf.c (virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): ...here.
(virDomainDiskSourceDefClear, virDomainDiskSourceDefParse)
(virDomainDiskSourceDefFormatInternal): Adjust callers.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefClear):
Likewise.
* src/qemu/qemu_command.c (qemuAddRBDHost)
(qemuParseDriveURIString, qemuParseNBDString)
(qemuBuildNetworkDriveURI, qemuParseCommandLineDisk)
(qemuParseCommandLine, qemuGetDriveSourceString): Likewise.
* src/qemu/qemu_command.h: Likewise.
* src/qemu/qemu_conf.c (qemuAddISCSIPoolSourceHost)
(qemuTranslateDiskSourcePool): Likewise.
* src/qemu/qemu_driver.c
(qemuDomainSnapshotCreateSingleDiskActive)
(qemuDomainSnapshotUndoSingleDiskActive): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGlusterInit): Likewise.
* src/storage/storage_driver.c (virStorageFileFree)
(virStorageFileInitInternal): Likewise.
* src/storage/storage_driver.h (_virStorageFile): Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-26 22:33:08 +00:00
|
|
|
/* Information related to network storage */
|
2014-04-27 00:15:22 +00:00
|
|
|
typedef enum {
|
2014-04-24 14:11:44 +00:00
|
|
|
VIR_STORAGE_NET_PROTOCOL_NONE,
|
2014-03-27 22:47:39 +00:00
|
|
|
VIR_STORAGE_NET_PROTOCOL_NBD,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_RBD,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_SHEEPDOG,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_GLUSTER,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_ISCSI,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_HTTP,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_HTTPS,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_FTP,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_FTPS,
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_TFTP,
|
2014-09-09 15:56:04 +00:00
|
|
|
VIR_STORAGE_NET_PROTOCOL_SSH,
|
2014-03-27 22:47:39 +00:00
|
|
|
|
|
|
|
VIR_STORAGE_NET_PROTOCOL_LAST
|
2014-04-27 00:15:22 +00:00
|
|
|
} virStorageNetProtocol;
|
2014-03-27 22:47:39 +00:00
|
|
|
|
|
|
|
VIR_ENUM_DECL(virStorageNetProtocol)
|
|
|
|
|
|
|
|
|
2014-04-27 00:15:22 +00:00
|
|
|
typedef enum {
|
conf: split network host structs to util/
Continuing the refactoring of host-side storage descriptions out
of conf/domain_conf and into util/virstoragefile, this patch
focuses on details about a host name/port/transport as used by
a network storage volume.
* src/conf/domain_conf.h (virDomainDiskProtocolTransport)
(virDomainDiskHostDef, virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): Move...
* src/util/virstoragefile.h (virStorageNetHostTransport)
(virStorageNetHostDef, virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): ...here,
with better names.
* src/util/virstoragefile.c (virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): Moved from...
* src/conf/domain_conf.c (virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): ...here.
(virDomainDiskSourceDefClear, virDomainDiskSourceDefParse)
(virDomainDiskSourceDefFormatInternal): Adjust callers.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefClear):
Likewise.
* src/qemu/qemu_command.c (qemuAddRBDHost)
(qemuParseDriveURIString, qemuParseNBDString)
(qemuBuildNetworkDriveURI, qemuParseCommandLineDisk)
(qemuParseCommandLine, qemuGetDriveSourceString): Likewise.
* src/qemu/qemu_command.h: Likewise.
* src/qemu/qemu_conf.c (qemuAddISCSIPoolSourceHost)
(qemuTranslateDiskSourcePool): Likewise.
* src/qemu/qemu_driver.c
(qemuDomainSnapshotCreateSingleDiskActive)
(qemuDomainSnapshotUndoSingleDiskActive): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGlusterInit): Likewise.
* src/storage/storage_driver.c (virStorageFileFree)
(virStorageFileInitInternal): Likewise.
* src/storage/storage_driver.h (_virStorageFile): Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-26 22:33:08 +00:00
|
|
|
VIR_STORAGE_NET_HOST_TRANS_TCP,
|
|
|
|
VIR_STORAGE_NET_HOST_TRANS_UNIX,
|
|
|
|
VIR_STORAGE_NET_HOST_TRANS_RDMA,
|
|
|
|
|
|
|
|
VIR_STORAGE_NET_HOST_TRANS_LAST
|
2014-04-27 00:15:22 +00:00
|
|
|
} virStorageNetHostTransport;
|
conf: split network host structs to util/
Continuing the refactoring of host-side storage descriptions out
of conf/domain_conf and into util/virstoragefile, this patch
focuses on details about a host name/port/transport as used by
a network storage volume.
* src/conf/domain_conf.h (virDomainDiskProtocolTransport)
(virDomainDiskHostDef, virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): Move...
* src/util/virstoragefile.h (virStorageNetHostTransport)
(virStorageNetHostDef, virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): ...here,
with better names.
* src/util/virstoragefile.c (virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): Moved from...
* src/conf/domain_conf.c (virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): ...here.
(virDomainDiskSourceDefClear, virDomainDiskSourceDefParse)
(virDomainDiskSourceDefFormatInternal): Adjust callers.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefClear):
Likewise.
* src/qemu/qemu_command.c (qemuAddRBDHost)
(qemuParseDriveURIString, qemuParseNBDString)
(qemuBuildNetworkDriveURI, qemuParseCommandLineDisk)
(qemuParseCommandLine, qemuGetDriveSourceString): Likewise.
* src/qemu/qemu_command.h: Likewise.
* src/qemu/qemu_conf.c (qemuAddISCSIPoolSourceHost)
(qemuTranslateDiskSourcePool): Likewise.
* src/qemu/qemu_driver.c
(qemuDomainSnapshotCreateSingleDiskActive)
(qemuDomainSnapshotUndoSingleDiskActive): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGlusterInit): Likewise.
* src/storage/storage_driver.c (virStorageFileFree)
(virStorageFileInitInternal): Likewise.
* src/storage/storage_driver.h (_virStorageFile): Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-26 22:33:08 +00:00
|
|
|
|
|
|
|
VIR_ENUM_DECL(virStorageNetHostTransport)
|
|
|
|
|
|
|
|
typedef struct _virStorageNetHostDef virStorageNetHostDef;
|
|
|
|
typedef virStorageNetHostDef *virStorageNetHostDefPtr;
|
|
|
|
struct _virStorageNetHostDef {
|
|
|
|
char *name;
|
2017-07-20 10:45:42 +00:00
|
|
|
unsigned int port;
|
Revert "maint: prefer enum over int for virstoragefile structs"
This partially reverts commits b279e52f7 and ea18f8b2.
It turns out our code base is full of:
if ((struct.member = virBlahFromString(str)) < 0)
goto error;
Meanwhile, the C standard says it is up to the compiler whether
an enum is signed or unsigned when all of its declared values
happen to be positive. In my testing (Fedora 20, gcc 4.8.2),
the compiler picked signed, and nothing changed. But others
testing with gcc 4.7 got compiler warnings, because it picked
the enum to be unsigned, but no unsigned value is less than 0.
Even worse:
if ((struct.member = virBlahFromString(str)) <= 0)
goto error;
is silently compiled without warning, but incorrectly treats -1
from a bad parse as a large positive number with no warning; and
without the compiler's help to find these instances, it is a
nightmare to maintain correctly. We could force signed enums
with a dummy negative declaration in each enum, or cast the
result of virBlahFromString back to int after assigning to an
enum value, or use a temporary int for collecting results from
virBlahFromString, but those actions are all uglier than what we
were trying to cure by directly using enum types for struct
values in the first place. It's better off to just live with int
members, and use 'switch ((virFoo) struct.member)' where we want
the compiler to help, than to track down all the conversions from
string to enum and ensure they don't suffer from type problems.
* src/util/virstorageencryption.h: Revert back to int declarations
with comment about enum usage.
* src/util/virstoragefile.h: Likewise.
* src/conf/domain_conf.c: Restore back to casts in switches.
* src/qemu/qemu_driver.c: Likewise.
* src/qemu/qemu_command.c: Add cast rather than revert.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-05-17 00:50:03 +00:00
|
|
|
int transport; /* virStorageNetHostTransport */
|
conf: split network host structs to util/
Continuing the refactoring of host-side storage descriptions out
of conf/domain_conf and into util/virstoragefile, this patch
focuses on details about a host name/port/transport as used by
a network storage volume.
* src/conf/domain_conf.h (virDomainDiskProtocolTransport)
(virDomainDiskHostDef, virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): Move...
* src/util/virstoragefile.h (virStorageNetHostTransport)
(virStorageNetHostDef, virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): ...here,
with better names.
* src/util/virstoragefile.c (virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): Moved from...
* src/conf/domain_conf.c (virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): ...here.
(virDomainDiskSourceDefClear, virDomainDiskSourceDefParse)
(virDomainDiskSourceDefFormatInternal): Adjust callers.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefClear):
Likewise.
* src/qemu/qemu_command.c (qemuAddRBDHost)
(qemuParseDriveURIString, qemuParseNBDString)
(qemuBuildNetworkDriveURI, qemuParseCommandLineDisk)
(qemuParseCommandLine, qemuGetDriveSourceString): Likewise.
* src/qemu/qemu_command.h: Likewise.
* src/qemu/qemu_conf.c (qemuAddISCSIPoolSourceHost)
(qemuTranslateDiskSourcePool): Likewise.
* src/qemu/qemu_driver.c
(qemuDomainSnapshotCreateSingleDiskActive)
(qemuDomainSnapshotUndoSingleDiskActive): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGlusterInit): Likewise.
* src/storage/storage_driver.c (virStorageFileFree)
(virStorageFileInitInternal): Likewise.
* src/storage/storage_driver.h (_virStorageFile): Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-26 22:33:08 +00:00
|
|
|
char *socket; /* path to unix socket */
|
|
|
|
};
|
|
|
|
|
2014-03-28 04:33:45 +00:00
|
|
|
/* 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.
|
|
|
|
*/
|
2014-04-27 00:15:22 +00:00
|
|
|
typedef enum {
|
2014-03-28 04:33:45 +00:00
|
|
|
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
|
2014-04-27 00:15:22 +00:00
|
|
|
} virStorageSourcePoolMode;
|
2014-03-28 04:33:45 +00:00
|
|
|
|
|
|
|
VIR_ENUM_DECL(virStorageSourcePoolMode)
|
|
|
|
|
|
|
|
typedef struct _virStorageSourcePoolDef virStorageSourcePoolDef;
|
|
|
|
struct _virStorageSourcePoolDef {
|
|
|
|
char *pool; /* pool name */
|
|
|
|
char *volume; /* volume name */
|
Revert "maint: prefer enum over int for virstoragefile structs"
This partially reverts commits b279e52f7 and ea18f8b2.
It turns out our code base is full of:
if ((struct.member = virBlahFromString(str)) < 0)
goto error;
Meanwhile, the C standard says it is up to the compiler whether
an enum is signed or unsigned when all of its declared values
happen to be positive. In my testing (Fedora 20, gcc 4.8.2),
the compiler picked signed, and nothing changed. But others
testing with gcc 4.7 got compiler warnings, because it picked
the enum to be unsigned, but no unsigned value is less than 0.
Even worse:
if ((struct.member = virBlahFromString(str)) <= 0)
goto error;
is silently compiled without warning, but incorrectly treats -1
from a bad parse as a large positive number with no warning; and
without the compiler's help to find these instances, it is a
nightmare to maintain correctly. We could force signed enums
with a dummy negative declaration in each enum, or cast the
result of virBlahFromString back to int after assigning to an
enum value, or use a temporary int for collecting results from
virBlahFromString, but those actions are all uglier than what we
were trying to cure by directly using enum types for struct
values in the first place. It's better off to just live with int
members, and use 'switch ((virFoo) struct.member)' where we want
the compiler to help, than to track down all the conversions from
string to enum and ensure they don't suffer from type problems.
* src/util/virstorageencryption.h: Revert back to int declarations
with comment about enum usage.
* src/util/virstoragefile.h: Likewise.
* src/conf/domain_conf.c: Restore back to casts in switches.
* src/qemu/qemu_driver.c: Likewise.
* src/qemu/qemu_command.c: Add cast rather than revert.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-05-17 00:50:03 +00:00
|
|
|
int voltype; /* virStorageVolType, internal only */
|
2014-05-14 22:40:33 +00:00
|
|
|
int pooltype; /* virStoragePoolType from storage_conf.h, internal only */
|
Revert "maint: prefer enum over int for virstoragefile structs"
This partially reverts commits b279e52f7 and ea18f8b2.
It turns out our code base is full of:
if ((struct.member = virBlahFromString(str)) < 0)
goto error;
Meanwhile, the C standard says it is up to the compiler whether
an enum is signed or unsigned when all of its declared values
happen to be positive. In my testing (Fedora 20, gcc 4.8.2),
the compiler picked signed, and nothing changed. But others
testing with gcc 4.7 got compiler warnings, because it picked
the enum to be unsigned, but no unsigned value is less than 0.
Even worse:
if ((struct.member = virBlahFromString(str)) <= 0)
goto error;
is silently compiled without warning, but incorrectly treats -1
from a bad parse as a large positive number with no warning; and
without the compiler's help to find these instances, it is a
nightmare to maintain correctly. We could force signed enums
with a dummy negative declaration in each enum, or cast the
result of virBlahFromString back to int after assigning to an
enum value, or use a temporary int for collecting results from
virBlahFromString, but those actions are all uglier than what we
were trying to cure by directly using enum types for struct
values in the first place. It's better off to just live with int
members, and use 'switch ((virFoo) struct.member)' where we want
the compiler to help, than to track down all the conversions from
string to enum and ensure they don't suffer from type problems.
* src/util/virstorageencryption.h: Revert back to int declarations
with comment about enum usage.
* src/util/virstoragefile.h: Likewise.
* src/conf/domain_conf.c: Restore back to casts in switches.
* src/qemu/qemu_driver.c: Likewise.
* src/qemu/qemu_command.c: Add cast rather than revert.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-05-17 00:50:03 +00:00
|
|
|
int actualtype; /* virStorageType, internal only */
|
|
|
|
int mode; /* virStorageSourcePoolMode */
|
2014-03-28 04:33:45 +00:00
|
|
|
};
|
|
|
|
typedef virStorageSourcePoolDef *virStorageSourcePoolDefPtr;
|
|
|
|
|
conf: split network host structs to util/
Continuing the refactoring of host-side storage descriptions out
of conf/domain_conf and into util/virstoragefile, this patch
focuses on details about a host name/port/transport as used by
a network storage volume.
* src/conf/domain_conf.h (virDomainDiskProtocolTransport)
(virDomainDiskHostDef, virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): Move...
* src/util/virstoragefile.h (virStorageNetHostTransport)
(virStorageNetHostDef, virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): ...here,
with better names.
* src/util/virstoragefile.c (virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): Moved from...
* src/conf/domain_conf.c (virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): ...here.
(virDomainDiskSourceDefClear, virDomainDiskSourceDefParse)
(virDomainDiskSourceDefFormatInternal): Adjust callers.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefClear):
Likewise.
* src/qemu/qemu_command.c (qemuAddRBDHost)
(qemuParseDriveURIString, qemuParseNBDString)
(qemuBuildNetworkDriveURI, qemuParseCommandLineDisk)
(qemuParseCommandLine, qemuGetDriveSourceString): Likewise.
* src/qemu/qemu_command.h: Likewise.
* src/qemu/qemu_conf.c (qemuAddISCSIPoolSourceHost)
(qemuTranslateDiskSourcePool): Likewise.
* src/qemu/qemu_driver.c
(qemuDomainSnapshotCreateSingleDiskActive)
(qemuDomainSnapshotUndoSingleDiskActive): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGlusterInit): Likewise.
* src/storage/storage_driver.c (virStorageFileFree)
(virStorageFileInitInternal): Likewise.
* src/storage/storage_driver.h (_virStorageFile): Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-26 22:33:08 +00:00
|
|
|
|
2014-06-23 14:40:49 +00:00
|
|
|
typedef enum {
|
|
|
|
VIR_STORAGE_AUTH_TYPE_NONE,
|
|
|
|
VIR_STORAGE_AUTH_TYPE_CHAP,
|
|
|
|
VIR_STORAGE_AUTH_TYPE_CEPHX,
|
|
|
|
|
|
|
|
VIR_STORAGE_AUTH_TYPE_LAST,
|
|
|
|
} virStorageAuthType;
|
|
|
|
VIR_ENUM_DECL(virStorageAuth)
|
|
|
|
|
|
|
|
typedef struct _virStorageAuthDef virStorageAuthDef;
|
|
|
|
typedef virStorageAuthDef *virStorageAuthDefPtr;
|
|
|
|
struct _virStorageAuthDef {
|
|
|
|
char *username;
|
|
|
|
char *secrettype; /* <secret type='%s' for disk source */
|
|
|
|
int authType; /* virStorageAuthType */
|
2016-05-28 12:43:23 +00:00
|
|
|
virSecretLookupTypeDef seclookupdef;
|
2014-06-23 14:40:49 +00:00
|
|
|
};
|
|
|
|
|
2014-04-08 10:07:24 +00:00
|
|
|
typedef struct _virStorageDriverData virStorageDriverData;
|
|
|
|
typedef virStorageDriverData *virStorageDriverDataPtr;
|
2014-03-28 14:45:50 +00:00
|
|
|
|
2014-03-28 18:38:43 +00:00
|
|
|
typedef struct _virStorageSource virStorageSource;
|
|
|
|
typedef virStorageSource *virStorageSourcePtr;
|
|
|
|
|
2014-10-30 10:42:55 +00:00
|
|
|
/* Stores information related to a host resource. In the case of backing
|
|
|
|
* chains, multiple source disks join to form a single guest view.
|
|
|
|
*
|
|
|
|
* IMPORTANT: When adding fields to this struct it's also necessary to add
|
|
|
|
* appropriate code to the virStorageSourceCopy deep copy function */
|
2014-03-28 18:38:43 +00:00
|
|
|
struct _virStorageSource {
|
Revert "maint: prefer enum over int for virstoragefile structs"
This partially reverts commits b279e52f7 and ea18f8b2.
It turns out our code base is full of:
if ((struct.member = virBlahFromString(str)) < 0)
goto error;
Meanwhile, the C standard says it is up to the compiler whether
an enum is signed or unsigned when all of its declared values
happen to be positive. In my testing (Fedora 20, gcc 4.8.2),
the compiler picked signed, and nothing changed. But others
testing with gcc 4.7 got compiler warnings, because it picked
the enum to be unsigned, but no unsigned value is less than 0.
Even worse:
if ((struct.member = virBlahFromString(str)) <= 0)
goto error;
is silently compiled without warning, but incorrectly treats -1
from a bad parse as a large positive number with no warning; and
without the compiler's help to find these instances, it is a
nightmare to maintain correctly. We could force signed enums
with a dummy negative declaration in each enum, or cast the
result of virBlahFromString back to int after assigning to an
enum value, or use a temporary int for collecting results from
virBlahFromString, but those actions are all uglier than what we
were trying to cure by directly using enum types for struct
values in the first place. It's better off to just live with int
members, and use 'switch ((virFoo) struct.member)' where we want
the compiler to help, than to track down all the conversions from
string to enum and ensure they don't suffer from type problems.
* src/util/virstorageencryption.h: Revert back to int declarations
with comment about enum usage.
* src/util/virstoragefile.h: Likewise.
* src/conf/domain_conf.c: Restore back to casts in switches.
* src/qemu/qemu_driver.c: Likewise.
* src/qemu/qemu_command.c: Add cast rather than revert.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-05-17 00:50:03 +00:00
|
|
|
int type; /* virStorageType */
|
2014-03-28 18:38:43 +00:00
|
|
|
char *path;
|
Revert "maint: prefer enum over int for virstoragefile structs"
This partially reverts commits b279e52f7 and ea18f8b2.
It turns out our code base is full of:
if ((struct.member = virBlahFromString(str)) < 0)
goto error;
Meanwhile, the C standard says it is up to the compiler whether
an enum is signed or unsigned when all of its declared values
happen to be positive. In my testing (Fedora 20, gcc 4.8.2),
the compiler picked signed, and nothing changed. But others
testing with gcc 4.7 got compiler warnings, because it picked
the enum to be unsigned, but no unsigned value is less than 0.
Even worse:
if ((struct.member = virBlahFromString(str)) <= 0)
goto error;
is silently compiled without warning, but incorrectly treats -1
from a bad parse as a large positive number with no warning; and
without the compiler's help to find these instances, it is a
nightmare to maintain correctly. We could force signed enums
with a dummy negative declaration in each enum, or cast the
result of virBlahFromString back to int after assigning to an
enum value, or use a temporary int for collecting results from
virBlahFromString, but those actions are all uglier than what we
were trying to cure by directly using enum types for struct
values in the first place. It's better off to just live with int
members, and use 'switch ((virFoo) struct.member)' where we want
the compiler to help, than to track down all the conversions from
string to enum and ensure they don't suffer from type problems.
* src/util/virstorageencryption.h: Revert back to int declarations
with comment about enum usage.
* src/util/virstoragefile.h: Likewise.
* src/conf/domain_conf.c: Restore back to casts in switches.
* src/qemu/qemu_driver.c: Likewise.
* src/qemu/qemu_command.c: Add cast rather than revert.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-05-17 00:50:03 +00:00
|
|
|
int protocol; /* virStorageNetProtocol */
|
2014-05-02 14:17:42 +00:00
|
|
|
char *volume; /* volume name for remote storage */
|
2014-11-11 10:35:25 +00:00
|
|
|
char *snapshot; /* for storage systems supporting internal snapshots */
|
2014-11-11 16:31:24 +00:00
|
|
|
char *configFile; /* some storage systems use config file as part of
|
|
|
|
the source definition */
|
2014-03-28 18:38:43 +00:00
|
|
|
size_t nhosts;
|
|
|
|
virStorageNetHostDefPtr hosts;
|
|
|
|
virStorageSourcePoolDefPtr srcpool;
|
2014-06-24 13:46:23 +00:00
|
|
|
virStorageAuthDefPtr auth;
|
2014-03-28 18:38:43 +00:00
|
|
|
virStorageEncryptionPtr encryption;
|
2014-03-30 03:21:06 +00:00
|
|
|
|
2014-03-28 18:38:43 +00:00
|
|
|
char *driverName;
|
2014-05-14 22:40:33 +00:00
|
|
|
int format; /* virStorageFileFormat in domain backing chains, but
|
|
|
|
* pool-specific enum for storage volumes */
|
2014-03-30 03:21:06 +00:00
|
|
|
virBitmapPtr features;
|
|
|
|
char *compat;
|
2014-07-15 08:49:46 +00:00
|
|
|
bool nocow;
|
2014-07-17 16:41:43 +00:00
|
|
|
bool sparse;
|
2014-03-28 18:38:43 +00:00
|
|
|
|
2014-03-30 03:21:06 +00:00
|
|
|
virStoragePermsPtr perms;
|
|
|
|
virStorageTimestampsPtr timestamps;
|
conf: track sizes directly in source struct
One of the features of qcow2 is that a wrapper file can have
more capacity than its backing file from the guest's perspective;
what's more, sparse files make tracking allocation of both
the active and backing file worthwhile. As such, it makes
more sense to show allocation numbers for each file in a chain,
and not just the top-level file. This sets up the fields for
the tracking, although it does not modify XML to display any
new information.
* src/util/virstoragefile.h (_virStorageSource): Add fields.
* src/conf/storage_conf.h (_virStorageVolDef): Drop redundant
fields.
* src/storage/storage_backend.c (virStorageBackendCreateBlockFrom)
(createRawFile, virStorageBackendCreateQemuImgCmd)
(virStorageBackendCreateQcowCreate): Update clients.
* src/storage/storage_driver.c (storageVolDelete)
(storageVolCreateXML, storageVolCreateXMLFrom, storageVolResize)
(storageVolWipeInternal, storageVolGetInfo): Likewise.
* src/storage/storage_backend_fs.c (virStorageBackendProbeTarget)
(virStorageBackendFileSystemRefresh)
(virStorageBackendFileSystemVolResize)
(virStorageBackendFileSystemVolRefresh): Likewise.
* src/storage/storage_backend_logical.c
(virStorageBackendLogicalMakeVol)
(virStorageBackendLogicalCreateVol): Likewise.
* src/storage/storage_backend_scsi.c
(virStorageBackendSCSINewLun): Likewise.
* src/storage/storage_backend_mpath.c
(virStorageBackendMpathNewVol): Likewise.
* src/storage/storage_backend_rbd.c
(volStorageBackendRBDRefreshVolInfo)
(virStorageBackendRBDCreateImage): Likewise.
* src/storage/storage_backend_disk.c
(virStorageBackendDiskMakeDataVol)
(virStorageBackendDiskCreateVol): Likewise.
* src/storage/storage_backend_sheepdog.c
(virStorageBackendSheepdogBuildVol)
(virStorageBackendSheepdogParseVdiList): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageBackendGlusterRefreshVol): Likewise.
* src/conf/storage_conf.c (virStorageVolDefFormat)
(virStorageVolDefParseXML): Likewise.
* src/test/test_driver.c (testOpenVolumesForPool)
(testStorageVolCreateXML, testStorageVolCreateXMLFrom)
(testStorageVolDelete, testStorageVolGetInfo): Likewise.
* src/esx/esx_storage_backend_iscsi.c (esxStorageVolGetXMLDesc):
Likewise.
* src/esx/esx_storage_backend_vmfs.c (esxStorageVolGetXMLDesc)
(esxStorageVolCreateXML): Likewise.
* src/parallels/parallels_driver.c (parallelsAddHddByVolume):
Likewise.
* src/parallels/parallels_storage.c (parallelsDiskDescParseNode)
(parallelsStorageVolDefineXML, parallelsStorageVolCreateXMLFrom)
(parallelsStorageVolDefRemove, parallelsStorageVolGetInfo):
Likewise.
* src/vbox/vbox_tmpl.c (vboxStorageVolCreateXML)
(vboxStorageVolGetXMLDesc): Likewise.
* tests/storagebackendsheepdogtest.c (test_vdi_list_parser):
Likewise.
* src/phyp/phyp_driver.c (phypStorageVolCreateXML): Likewise.
2014-04-01 23:43:36 +00:00
|
|
|
unsigned long long capacity; /* in bytes, 0 if unknown */
|
qemu: let blockinfo reuse virStorageSource
Right now, grabbing blockinfo always calls stat on the disk, then
opens the image to determine the capacity, using a throw-away
virStorageSourcePtr. This has a couple of drawbacks:
1. We are calling stat and opening a file on every invocation of
the API. However, there are cases where the stats should NOT be
changing between successive calls (if a domain is running, no
one should be changing the physical size of a block device or raw
image behind our backs; capacity of read-only files should not
be changing; and we are the gateway to the block-resize command
to know when the capacity of read-write files should be changing).
True, we still have to use stat in some cases (a sparse raw file
changes allocation if it is read-write and the amount of holes is
changing, and a read-write qcow2 image stored in a file changes
physical size if it was not fully pre-allocated). But for
read-only images, even this should be something we can remember
from the previous time, rather than repeating every call.
2. We want to enhance the power of virDomainListGetStats, by
sharing code. But we already have a virStorageSourcePtr for
each disk, and it would be easier to reuse the common structure
than to have to worry about the one-off virDomainBlockInfoPtr.
While this patch does not optimize reuse of information in point
1, it does get us closer to being able to do so; by updating a
structure that survives between consecutive calls.
* src/util/virstoragefile.h (_virStorageSource): Add physical, to
mirror virDomainBlockInfo; rearrange fields to match public struct.
(virStorageSourceCopy): Copy the new field.
* src/qemu/qemu_driver.c (qemuDomainGetBlockInfo): Store into
storage source, then copy to block info.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-11-16 04:54:33 +00:00
|
|
|
unsigned long long allocation; /* in bytes, 0 if unknown */
|
|
|
|
unsigned long long physical; /* in bytes, 0 if unknown */
|
2016-04-29 11:43:57 +00:00
|
|
|
bool has_allocation; /* Set to true when provided in XML */
|
|
|
|
|
2014-03-28 18:38:43 +00:00
|
|
|
size_t nseclabels;
|
|
|
|
virSecurityDeviceLabelDefPtr *seclabels;
|
2014-04-08 10:07:24 +00:00
|
|
|
|
2014-06-24 13:15:55 +00:00
|
|
|
/* Don't ever write to the image */
|
|
|
|
bool readonly;
|
|
|
|
|
|
|
|
/* image is shared across hosts */
|
|
|
|
bool shared;
|
|
|
|
|
2014-04-17 14:04:33 +00:00
|
|
|
/* backing chain of the storage source */
|
2014-04-17 20:46:18 +00:00
|
|
|
virStorageSourcePtr backingStore;
|
2014-04-17 14:04:33 +00:00
|
|
|
|
2014-04-08 10:07:24 +00:00
|
|
|
/* metadata for storage driver access to remote and local volumes */
|
|
|
|
virStorageDriverDataPtr drv;
|
2014-04-17 14:04:33 +00:00
|
|
|
|
|
|
|
/* metadata about storage image which need separate fields */
|
2014-05-27 08:05:57 +00:00
|
|
|
/* Relative name by which this image was opened from its parent, or NULL
|
|
|
|
* if this image was opened by absolute name */
|
2014-04-17 14:04:33 +00:00
|
|
|
char *relPath;
|
|
|
|
/* Name of the child backing store recorded in metadata of the
|
|
|
|
* current file. */
|
|
|
|
char *backingStoreRaw;
|
2017-02-22 15:20:00 +00:00
|
|
|
|
|
|
|
/* metadata that allows identifying given storage source */
|
|
|
|
char *nodeformat; /* name of the format handler object */
|
2017-07-25 16:11:58 +00:00
|
|
|
char *nodestorage; /* name of the storage object */
|
2014-03-28 18:38:43 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2010-04-27 19:31:09 +00:00
|
|
|
# ifndef DEV_BSIZE
|
|
|
|
# define DEV_BSIZE 512
|
|
|
|
# endif
|
|
|
|
|
2012-10-20 19:56:35 +00:00
|
|
|
int virStorageFileProbeFormat(const char *path, uid_t uid, gid_t gid);
|
2010-06-15 13:58:10 +00:00
|
|
|
|
2014-04-25 19:38:40 +00:00
|
|
|
int virStorageFileGetMetadataInternal(virStorageSourcePtr meta,
|
|
|
|
char *buf,
|
|
|
|
size_t len,
|
|
|
|
int *backingFormat)
|
2017-06-20 14:34:14 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
2014-04-25 19:38:40 +00:00
|
|
|
|
2014-04-17 14:05:16 +00:00
|
|
|
virStorageSourcePtr virStorageFileGetMetadataFromFD(const char *path,
|
|
|
|
int fd,
|
2014-05-28 12:41:24 +00:00
|
|
|
int format,
|
|
|
|
int *backingFormat);
|
2014-04-17 14:05:16 +00:00
|
|
|
virStorageSourcePtr virStorageFileGetMetadataFromBuf(const char *path,
|
|
|
|
char *buf,
|
|
|
|
size_t len,
|
2014-07-07 09:38:28 +00:00
|
|
|
int format,
|
2014-04-17 14:05:16 +00:00
|
|
|
int *backingFormat)
|
2014-07-09 08:00:58 +00:00
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
2014-04-17 14:05:16 +00:00
|
|
|
int virStorageFileChainGetBroken(virStorageSourcePtr chain,
|
2013-07-29 12:51:15 +00:00
|
|
|
char **broken_file);
|
2009-09-29 08:34:48 +00:00
|
|
|
|
2014-04-18 12:35:33 +00:00
|
|
|
int virStorageFileParseChainIndex(const char *diskTarget,
|
|
|
|
const char *name,
|
|
|
|
unsigned int *chainIndex)
|
|
|
|
ATTRIBUTE_NONNULL(3);
|
|
|
|
|
2017-02-23 16:10:43 +00:00
|
|
|
int virStorageFileParseBackingStoreStr(const char *str,
|
|
|
|
char **target,
|
|
|
|
unsigned int *chainIndex)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3);
|
|
|
|
|
2014-04-18 13:25:19 +00:00
|
|
|
virStorageSourcePtr virStorageFileChainLookup(virStorageSourcePtr chain,
|
2014-04-18 12:35:33 +00:00
|
|
|
virStorageSourcePtr startFrom,
|
2014-04-18 13:25:19 +00:00
|
|
|
const char *name,
|
2014-04-18 12:35:33 +00:00
|
|
|
unsigned int idx,
|
2014-06-25 13:43:04 +00:00
|
|
|
virStorageSourcePtr *parent)
|
2014-04-12 04:08:07 +00:00
|
|
|
ATTRIBUTE_NONNULL(1);
|
2012-10-12 22:29:14 +00:00
|
|
|
|
2013-05-31 05:16:14 +00:00
|
|
|
int virStorageFileResize(const char *path,
|
|
|
|
unsigned long long capacity,
|
|
|
|
unsigned long long orig_capacity,
|
|
|
|
bool pre_allocate);
|
2012-01-30 07:40:00 +00:00
|
|
|
|
2012-02-21 21:58:50 +00:00
|
|
|
int virStorageFileIsClusterFS(const char *path);
|
2014-04-09 22:08:42 +00:00
|
|
|
bool virStorageIsFile(const char *path);
|
2017-06-19 16:06:34 +00:00
|
|
|
bool virStorageIsRelative(const char *backing);
|
Don't reset user/group/security label on shared filesystems during migrate
When QEMU runs with its disk on NFS, and as a non-root user, the
disk is chownd to that non-root user. When migration completes
the last step is shutting down the QEMU on the source host. THis
normally resets user/group/security label. This is bad when the
VM was just migrated because the file is still in use on the dest
host. It is thus neccessary to skip the reset step for any files
found to be on a shared filesystem
* src/libvirt_private.syms: Export virStorageFileIsSharedFS
* src/util/storage_file.c, src/util/storage_file.h: Add a new
method virStorageFileIsSharedFS() to determine if a file is
on a shared filesystem (NFS, GFS, OCFS2, etc)
* src/qemu/qemu_driver.c: Tell security driver not to reset
disk labels on migration completion
* src/qemu/qemu_security_dac.c, src/qemu/qemu_security_stacked.c,
src/security/security_selinux.c, src/security/security_driver.h,
src/security/security_apparmor.c: Add ability to skip disk
restore step for files on shared filesystems.
2010-05-13 15:49:22 +00:00
|
|
|
|
2012-12-11 19:10:51 +00:00
|
|
|
int virStorageFileGetLVMKey(const char *path,
|
|
|
|
char **key);
|
|
|
|
int virStorageFileGetSCSIKey(const char *path,
|
|
|
|
char **key);
|
2011-07-20 09:40:53 +00:00
|
|
|
|
2014-06-23 14:40:49 +00:00
|
|
|
void virStorageAuthDefFree(virStorageAuthDefPtr def);
|
|
|
|
virStorageAuthDefPtr virStorageAuthDefCopy(const virStorageAuthDef *src);
|
|
|
|
virStorageAuthDefPtr virStorageAuthDefParse(xmlDocPtr xml, xmlNodePtr root);
|
|
|
|
int virStorageAuthDefFormat(virBufferPtr buf, virStorageAuthDefPtr authdef);
|
|
|
|
|
2014-06-18 16:39:47 +00:00
|
|
|
virSecurityDeviceLabelDefPtr
|
|
|
|
virStorageSourceGetSecurityLabelDef(virStorageSourcePtr src,
|
|
|
|
const char *model);
|
|
|
|
|
conf: split network host structs to util/
Continuing the refactoring of host-side storage descriptions out
of conf/domain_conf and into util/virstoragefile, this patch
focuses on details about a host name/port/transport as used by
a network storage volume.
* src/conf/domain_conf.h (virDomainDiskProtocolTransport)
(virDomainDiskHostDef, virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): Move...
* src/util/virstoragefile.h (virStorageNetHostTransport)
(virStorageNetHostDef, virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): ...here,
with better names.
* src/util/virstoragefile.c (virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): Moved from...
* src/conf/domain_conf.c (virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): ...here.
(virDomainDiskSourceDefClear, virDomainDiskSourceDefParse)
(virDomainDiskSourceDefFormatInternal): Adjust callers.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefClear):
Likewise.
* src/qemu/qemu_command.c (qemuAddRBDHost)
(qemuParseDriveURIString, qemuParseNBDString)
(qemuBuildNetworkDriveURI, qemuParseCommandLineDisk)
(qemuParseCommandLine, qemuGetDriveSourceString): Likewise.
* src/qemu/qemu_command.h: Likewise.
* src/qemu/qemu_conf.c (qemuAddISCSIPoolSourceHost)
(qemuTranslateDiskSourcePool): Likewise.
* src/qemu/qemu_driver.c
(qemuDomainSnapshotCreateSingleDiskActive)
(qemuDomainSnapshotUndoSingleDiskActive): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGlusterInit): Likewise.
* src/storage/storage_driver.c (virStorageFileFree)
(virStorageFileInitInternal): Likewise.
* src/storage/storage_driver.h (_virStorageFile): Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-26 22:33:08 +00:00
|
|
|
void virStorageNetHostDefClear(virStorageNetHostDefPtr def);
|
|
|
|
void virStorageNetHostDefFree(size_t nhosts, virStorageNetHostDefPtr hosts);
|
|
|
|
virStorageNetHostDefPtr virStorageNetHostDefCopy(size_t nhosts,
|
|
|
|
virStorageNetHostDefPtr hosts);
|
|
|
|
|
2014-06-25 16:48:27 +00:00
|
|
|
int virStorageSourceInitChainElement(virStorageSourcePtr newelem,
|
|
|
|
virStorageSourcePtr old,
|
|
|
|
bool force);
|
2014-03-29 18:00:38 +00:00
|
|
|
void virStorageSourcePoolDefFree(virStorageSourcePoolDefPtr def);
|
|
|
|
void virStorageSourceClear(virStorageSourcePtr def);
|
2016-05-02 11:42:32 +00:00
|
|
|
int virStorageSourceGetActualType(const virStorageSource *def);
|
2016-12-14 14:25:22 +00:00
|
|
|
bool virStorageSourceIsLocalStorage(const virStorageSource *src);
|
2014-09-11 17:43:53 +00:00
|
|
|
bool virStorageSourceIsEmpty(virStorageSourcePtr src);
|
2016-05-02 11:42:32 +00:00
|
|
|
bool virStorageSourceIsBlockLocal(const virStorageSource *src);
|
2014-04-07 15:58:08 +00:00
|
|
|
void virStorageSourceFree(virStorageSourcePtr def);
|
2014-06-20 08:40:45 +00:00
|
|
|
void virStorageSourceBackingStoreClear(virStorageSourcePtr def);
|
2016-12-01 21:19:26 +00:00
|
|
|
int virStorageSourceUpdatePhysicalSize(virStorageSourcePtr src,
|
|
|
|
int fd, struct stat const *sb);
|
2016-12-01 21:39:36 +00:00
|
|
|
int virStorageSourceUpdateBackingSizes(virStorageSourcePtr src,
|
|
|
|
int fd, struct stat const *sb);
|
2016-12-01 21:23:58 +00:00
|
|
|
int virStorageSourceUpdateCapacity(virStorageSourcePtr src,
|
|
|
|
char *buf, ssize_t len,
|
|
|
|
bool probe);
|
2016-12-01 21:39:36 +00:00
|
|
|
|
2014-04-25 11:23:50 +00:00
|
|
|
virStorageSourcePtr virStorageSourceNewFromBacking(virStorageSourcePtr parent);
|
2014-06-16 11:10:42 +00:00
|
|
|
virStorageSourcePtr virStorageSourceCopy(const virStorageSource *src,
|
|
|
|
bool backingChain)
|
|
|
|
ATTRIBUTE_NONNULL(1);
|
2014-04-25 11:23:50 +00:00
|
|
|
|
2014-10-31 16:49:56 +00:00
|
|
|
int virStorageSourceParseRBDColonString(const char *rbdstr,
|
|
|
|
virStorageSourcePtr src)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
|
|
|
|
2014-05-02 17:22:17 +00:00
|
|
|
typedef int
|
|
|
|
(*virStorageFileSimplifyPathReadlinkCallback)(const char *path,
|
|
|
|
char **link,
|
|
|
|
void *data);
|
|
|
|
char *virStorageFileCanonicalizePath(const char *path,
|
|
|
|
virStorageFileSimplifyPathReadlinkCallback cb,
|
|
|
|
void *cbdata);
|
conf: split network host structs to util/
Continuing the refactoring of host-side storage descriptions out
of conf/domain_conf and into util/virstoragefile, this patch
focuses on details about a host name/port/transport as used by
a network storage volume.
* src/conf/domain_conf.h (virDomainDiskProtocolTransport)
(virDomainDiskHostDef, virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): Move...
* src/util/virstoragefile.h (virStorageNetHostTransport)
(virStorageNetHostDef, virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): ...here,
with better names.
* src/util/virstoragefile.c (virStorageNetHostDefClear)
(virStorageNetHostDefFree, virStorageNetHostDefCopy): Moved from...
* src/conf/domain_conf.c (virDomainDiskHostDefClear)
(virDomainDiskHostDefFree, virDomainDiskHostDefCopy): ...here.
(virDomainDiskSourceDefClear, virDomainDiskSourceDefParse)
(virDomainDiskSourceDefFormatInternal): Adjust callers.
* src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Likewise.
* src/conf/snapshot_conf.c (virDomainSnapshotDiskDefClear):
Likewise.
* src/qemu/qemu_command.c (qemuAddRBDHost)
(qemuParseDriveURIString, qemuParseNBDString)
(qemuBuildNetworkDriveURI, qemuParseCommandLineDisk)
(qemuParseCommandLine, qemuGetDriveSourceString): Likewise.
* src/qemu/qemu_command.h: Likewise.
* src/qemu/qemu_conf.c (qemuAddISCSIPoolSourceHost)
(qemuTranslateDiskSourcePool): Likewise.
* src/qemu/qemu_driver.c
(qemuDomainSnapshotCreateSingleDiskActive)
(qemuDomainSnapshotUndoSingleDiskActive): Likewise.
* src/storage/storage_backend_gluster.c
(virStorageFileBackendGlusterInit): Likewise.
* src/storage/storage_driver.c (virStorageFileFree)
(virStorageFileInitInternal): Likewise.
* src/storage/storage_driver.h (_virStorageFile): Likewise.
* src/libvirt_private.syms (domain_conf.h): Move symbols...
(virstoragefile.h): ...as appropriate.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-03-26 22:33:08 +00:00
|
|
|
|
2014-05-13 08:10:56 +00:00
|
|
|
int virStorageFileGetRelativeBackingPath(virStorageSourcePtr from,
|
|
|
|
virStorageSourcePtr to,
|
|
|
|
char **relpath)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
|
|
|
|
|
2015-04-09 08:48:49 +00:00
|
|
|
int virStorageFileCheckCompat(const char *compat);
|
2016-07-12 15:04:16 +00:00
|
|
|
|
|
|
|
virStorageSourcePtr virStorageSourceNewFromBackingAbsolute(const char *path);
|
|
|
|
|
2016-12-16 17:30:39 +00:00
|
|
|
bool virStorageSourceIsRelative(virStorageSourcePtr src);
|
|
|
|
|
2017-02-22 15:20:00 +00:00
|
|
|
virStorageSourcePtr
|
|
|
|
virStorageSourceFindByNodeName(virStorageSourcePtr top,
|
|
|
|
const char *nodeName,
|
|
|
|
unsigned int *index)
|
|
|
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
|
|
|
|
|
2017-07-20 10:45:42 +00:00
|
|
|
void
|
2017-07-10 11:41:43 +00:00
|
|
|
virStorageSourceNetworkAssignDefaultPorts(virStorageSourcePtr src)
|
|
|
|
ATTRIBUTE_NONNULL(1);
|
2017-07-07 13:21:04 +00:00
|
|
|
|
2009-09-25 13:20:13 +00:00
|
|
|
#endif /* __VIR_STORAGE_FILE_H__ */
|