提交 64bd1b9d 编写于 作者: E Eric Blake

storage: reject unknown flags

* src/storage/storage_backend.c (virStorageBackendCreateBlockFrom)
(virStorageBackendCreateQemuImg)
(virStorageBackendCreateQcowCreate): Reject unknown flags.
* src/storage/storage_backend_disk.c (virStorageBackendDiskBuildPool)
(virStorageBackendDiskDeleteVol): Likewise.
* src/storage/storage_backend_fs.c
(virStorageBackendFileSystemNetFindPoolSources)
(virStorageBackendFileSystemBuild)
(virStorageBackendFileSystemDelete, createFileDir)
(virStorageBackendFileSystemVolBuildFrom)
(virStorageBackendFileSystemVolDelete): Likewise.
* src/storage/storage_backend_iscsi.c
(virStorageBackendISCSIFindPoolSources): Likewise.
* src/storage/storage_backend_logical.c
(virStorageBackendLogicalFindPoolSources)
(virStorageBackendLogicalBuildPool)
(virStorageBackendLogicalDeletePool)
(virStorageBackendLogicalDeleteVol): Likewise.
* src/storage/storage_driver.c (storageOpen, storagePoolCreate)
(storagePoolDefine, storagePoolRefresh, storagePoolGetXMLDesc)
(storageVolumeCreateXML, storageVolumeCreateXMLFrom)
(storageVolumeGetXMLDesc): Likewise.
上级 ba78d2cf
...@@ -233,7 +233,7 @@ virStorageBackendCreateBlockFrom(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -233,7 +233,7 @@ virStorageBackendCreateBlockFrom(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool ATTRIBUTE_UNUSED, virStoragePoolObjPtr pool ATTRIBUTE_UNUSED,
virStorageVolDefPtr vol, virStorageVolDefPtr vol,
virStorageVolDefPtr inputvol, virStorageVolDefPtr inputvol,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
int fd = -1; int fd = -1;
int ret = -1; int ret = -1;
...@@ -242,6 +242,8 @@ virStorageBackendCreateBlockFrom(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -242,6 +242,8 @@ virStorageBackendCreateBlockFrom(virConnectPtr conn ATTRIBUTE_UNUSED,
gid_t gid; gid_t gid;
uid_t uid; uid_t uid;
virCheckFlags(0, -1);
if ((fd = open(vol->target.path, O_RDWR)) < 0) { if ((fd = open(vol->target.path, O_RDWR)) < 0) {
virReportSystemError(errno, virReportSystemError(errno,
_("cannot create path '%s'"), _("cannot create path '%s'"),
...@@ -643,7 +645,7 @@ virStorageBackendCreateQemuImg(virConnectPtr conn, ...@@ -643,7 +645,7 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
virStorageVolDefPtr vol, virStorageVolDefPtr vol,
virStorageVolDefPtr inputvol, virStorageVolDefPtr inputvol,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
int ret = -1; int ret = -1;
char *create_tool; char *create_tool;
...@@ -652,6 +654,8 @@ virStorageBackendCreateQemuImg(virConnectPtr conn, ...@@ -652,6 +654,8 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
bool do_encryption = (vol->target.encryption != NULL); bool do_encryption = (vol->target.encryption != NULL);
unsigned long long int size_arg; unsigned long long int size_arg;
virCheckFlags(0, -1);
const char *type = virStorageFileFormatTypeToString(vol->target.format); const char *type = virStorageFileFormatTypeToString(vol->target.format);
const char *backingType = vol->backingStore.path ? const char *backingType = vol->backingStore.path ?
virStorageFileFormatTypeToString(vol->backingStore.format) : NULL; virStorageFileFormatTypeToString(vol->backingStore.format) : NULL;
...@@ -847,12 +851,14 @@ virStorageBackendCreateQcowCreate(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -847,12 +851,14 @@ virStorageBackendCreateQcowCreate(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
virStorageVolDefPtr vol, virStorageVolDefPtr vol,
virStorageVolDefPtr inputvol, virStorageVolDefPtr inputvol,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
int ret; int ret;
char *size; char *size;
virCommandPtr cmd; virCommandPtr cmd;
virCheckFlags(0, -1);
if (inputvol) { if (inputvol) {
virStorageReportError(VIR_ERR_INTERNAL_ERROR, "%s", virStorageReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("cannot copy from volume with qcow-create")); _("cannot copy from volume with qcow-create"));
......
/* /*
* storage_backend_disk.c: storage backend for disk handling * storage_backend_disk.c: storage backend for disk handling
* *
* Copyright (C) 2007-2008, 2010 Red Hat, Inc. * Copyright (C) 2007-2008, 2010-2011 Red Hat, Inc.
* Copyright (C) 2007-2008 Daniel P. Berrange * Copyright (C) 2007-2008 Daniel P. Berrange
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
...@@ -334,7 +334,7 @@ virStorageBackendDiskRefreshPool(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -334,7 +334,7 @@ virStorageBackendDiskRefreshPool(virConnectPtr conn ATTRIBUTE_UNUSED,
static int static int
virStorageBackendDiskBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendDiskBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
/* eg parted /dev/sda mklabel msdos */ /* eg parted /dev/sda mklabel msdos */
const char *prog[] = { const char *prog[] = {
...@@ -347,6 +347,8 @@ virStorageBackendDiskBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -347,6 +347,8 @@ virStorageBackendDiskBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
NULL, NULL,
}; };
virCheckFlags(0, -1);
if (virRun(prog, NULL) < 0) if (virRun(prog, NULL) < 0)
return -1; return -1;
...@@ -643,7 +645,7 @@ static int ...@@ -643,7 +645,7 @@ static int
virStorageBackendDiskDeleteVol(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendDiskDeleteVol(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
virStorageVolDefPtr vol, virStorageVolDefPtr vol,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
char *part_num = NULL; char *part_num = NULL;
char *devpath = NULL; char *devpath = NULL;
...@@ -652,6 +654,8 @@ virStorageBackendDiskDeleteVol(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -652,6 +654,8 @@ virStorageBackendDiskDeleteVol(virConnectPtr conn ATTRIBUTE_UNUSED,
bool isDevMapperDevice; bool isDevMapperDevice;
int rc = -1; int rc = -1;
virCheckFlags(0, -1);
if (virFileResolveLink(vol->target.path, &devpath) < 0) { if (virFileResolveLink(vol->target.path, &devpath) < 0) {
virReportSystemError(errno, virReportSystemError(errno,
_("Couldn't read volume target path '%s'"), _("Couldn't read volume target path '%s'"),
......
...@@ -212,7 +212,7 @@ cleanup: ...@@ -212,7 +212,7 @@ cleanup:
static char * static char *
virStorageBackendFileSystemNetFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendFileSystemNetFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,
const char *srcSpec, const char *srcSpec,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
/* /*
* # showmount --no-headers -e HOSTNAME * # showmount --no-headers -e HOSTNAME
...@@ -241,6 +241,8 @@ virStorageBackendFileSystemNetFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSE ...@@ -241,6 +241,8 @@ virStorageBackendFileSystemNetFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSE
char *retval = NULL; char *retval = NULL;
unsigned int i; unsigned int i;
virCheckFlags(0, NULL);
source = virStoragePoolDefParseSourceString(srcSpec, source = virStoragePoolDefParseSourceString(srcSpec,
VIR_STORAGE_POOL_NETFS); VIR_STORAGE_POOL_NETFS);
if (!source) if (!source)
...@@ -538,12 +540,14 @@ virStorageBackendFileSystemStart(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -538,12 +540,14 @@ virStorageBackendFileSystemStart(virConnectPtr conn ATTRIBUTE_UNUSED,
static int static int
virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
int err, ret = -1; int err, ret = -1;
char *parent; char *parent;
char *p; char *p;
virCheckFlags(0, -1);
if ((parent = strdup(pool->def->target.path)) == NULL) { if ((parent = strdup(pool->def->target.path)) == NULL) {
virReportOOMError(); virReportOOMError();
goto error; goto error;
...@@ -755,8 +759,10 @@ virStorageBackendFileSystemStop(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -755,8 +759,10 @@ virStorageBackendFileSystemStop(virConnectPtr conn ATTRIBUTE_UNUSED,
static int static int
virStorageBackendFileSystemDelete(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendFileSystemDelete(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
virCheckFlags(0, -1);
/* XXX delete all vols first ? */ /* XXX delete all vols first ? */
if (rmdir(pool->def->target.path) < 0) { if (rmdir(pool->def->target.path) < 0) {
...@@ -806,9 +812,12 @@ static int createFileDir(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -806,9 +812,12 @@ static int createFileDir(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
virStorageVolDefPtr vol, virStorageVolDefPtr vol,
virStorageVolDefPtr inputvol, virStorageVolDefPtr inputvol,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
int err; int err;
virCheckFlags(0, -1);
if (inputvol) { if (inputvol) {
virStorageReportError(VIR_ERR_INTERNAL_ERROR, virStorageReportError(VIR_ERR_INTERNAL_ERROR,
"%s", "%s",
...@@ -896,7 +905,10 @@ virStorageBackendFileSystemVolBuildFrom(virConnectPtr conn, ...@@ -896,7 +905,10 @@ virStorageBackendFileSystemVolBuildFrom(virConnectPtr conn,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
virStorageVolDefPtr vol, virStorageVolDefPtr vol,
virStorageVolDefPtr inputvol, virStorageVolDefPtr inputvol,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virCheckFlags(0, -1);
return _virStorageBackendFileSystemVolBuild(conn, pool, vol, inputvol); return _virStorageBackendFileSystemVolBuild(conn, pool, vol, inputvol);
} }
...@@ -907,8 +919,10 @@ static int ...@@ -907,8 +919,10 @@ static int
virStorageBackendFileSystemVolDelete(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendFileSystemVolDelete(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool ATTRIBUTE_UNUSED, virStoragePoolObjPtr pool ATTRIBUTE_UNUSED,
virStorageVolDefPtr vol, virStorageVolDefPtr vol,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
virCheckFlags(0, -1);
if (unlink(vol->target.path) < 0) { if (unlink(vol->target.path) < 0) {
/* Silently ignore failures where the vol has already gone away */ /* Silently ignore failures where the vol has already gone away */
if (errno != ENOENT) { if (errno != ENOENT) {
......
...@@ -550,7 +550,7 @@ virStorageBackendISCSIScanTargets(const char *portal, ...@@ -550,7 +550,7 @@ virStorageBackendISCSIScanTargets(const char *portal,
static char * static char *
virStorageBackendISCSIFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendISCSIFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,
const char *srcSpec, const char *srcSpec,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
virStoragePoolSourcePtr source = NULL; virStoragePoolSourcePtr source = NULL;
size_t ntargets = 0; size_t ntargets = 0;
...@@ -564,6 +564,8 @@ virStorageBackendISCSIFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -564,6 +564,8 @@ virStorageBackendISCSIFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,
}; };
char *portal = NULL; char *portal = NULL;
virCheckFlags(0, NULL);
if (!(source = virStoragePoolDefParseSourceString(srcSpec, if (!(source = virStoragePoolDefParseSourceString(srcSpec,
list.type))) list.type)))
return NULL; return NULL;
......
/* /*
* storage_backend_logical.c: storage backend for logical volume handling * storage_backend_logical.c: storage backend for logical volume handling
* *
* Copyright (C) 2007-2009 Red Hat, Inc. * Copyright (C) 2007-2009, 2011 Red Hat, Inc.
* Copyright (C) 2007-2008 Daniel P. Berrange * Copyright (C) 2007-2008 Daniel P. Berrange
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
...@@ -294,7 +294,7 @@ virStorageBackendLogicalFindPoolSourcesFunc(virStoragePoolObjPtr pool ATTRIBUTE_ ...@@ -294,7 +294,7 @@ virStorageBackendLogicalFindPoolSourcesFunc(virStoragePoolObjPtr pool ATTRIBUTE_
static char * static char *
virStorageBackendLogicalFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendLogicalFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,
const char *srcSpec ATTRIBUTE_UNUSED, const char *srcSpec ATTRIBUTE_UNUSED,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
/* /*
* # pvs --noheadings -o pv_name,vg_name * # pvs --noheadings -o pv_name,vg_name
...@@ -313,6 +313,8 @@ virStorageBackendLogicalFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -313,6 +313,8 @@ virStorageBackendLogicalFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolSourceList sourceList; virStoragePoolSourceList sourceList;
int i; int i;
virCheckFlags(0, NULL);
/* /*
* NOTE: ignoring errors here; this is just to "touch" any logical volumes * NOTE: ignoring errors here; this is just to "touch" any logical volumes
* that might be hanging around, so if this fails for some reason, the * that might be hanging around, so if this fails for some reason, the
...@@ -382,13 +384,15 @@ virStorageBackendLogicalStartPool(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -382,13 +384,15 @@ virStorageBackendLogicalStartPool(virConnectPtr conn ATTRIBUTE_UNUSED,
static int static int
virStorageBackendLogicalBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendLogicalBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
const char **vgargv; const char **vgargv;
const char *pvargv[3]; const char *pvargv[3];
int n = 0, i, fd; int n = 0, i, fd;
char zeros[PV_BLANK_SECTOR_SIZE]; char zeros[PV_BLANK_SECTOR_SIZE];
virCheckFlags(0, -1);
memset(zeros, 0, sizeof(zeros)); memset(zeros, 0, sizeof(zeros));
if (VIR_ALLOC_N(vgargv, 3 + pool->def->source.ndevice) < 0) { if (VIR_ALLOC_N(vgargv, 3 + pool->def->source.ndevice) < 0) {
...@@ -518,7 +522,7 @@ virStorageBackendLogicalStopPool(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -518,7 +522,7 @@ virStorageBackendLogicalStopPool(virConnectPtr conn ATTRIBUTE_UNUSED,
static int static int
virStorageBackendLogicalDeletePool(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendLogicalDeletePool(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
const char *cmdargv[] = { const char *cmdargv[] = {
VGREMOVE, "-f", pool->def->source.name, NULL VGREMOVE, "-f", pool->def->source.name, NULL
...@@ -526,6 +530,8 @@ virStorageBackendLogicalDeletePool(virConnectPtr conn ATTRIBUTE_UNUSED, ...@@ -526,6 +530,8 @@ virStorageBackendLogicalDeletePool(virConnectPtr conn ATTRIBUTE_UNUSED,
const char *pvargv[3]; const char *pvargv[3];
int i, error; int i, error;
virCheckFlags(0, -1);
/* first remove the volume group */ /* first remove the volume group */
if (virRun(cmdargv, NULL) < 0) if (virRun(cmdargv, NULL) < 0)
return -1; return -1;
...@@ -665,12 +671,14 @@ static int ...@@ -665,12 +671,14 @@ static int
virStorageBackendLogicalDeleteVol(virConnectPtr conn ATTRIBUTE_UNUSED, virStorageBackendLogicalDeleteVol(virConnectPtr conn ATTRIBUTE_UNUSED,
virStoragePoolObjPtr pool ATTRIBUTE_UNUSED, virStoragePoolObjPtr pool ATTRIBUTE_UNUSED,
virStorageVolDefPtr vol, virStorageVolDefPtr vol,
unsigned int flags ATTRIBUTE_UNUSED) unsigned int flags)
{ {
const char *cmdargv[] = { const char *cmdargv[] = {
LVREMOVE, "-f", vol->target.path, NULL LVREMOVE, "-f", vol->target.path, NULL
}; };
virCheckFlags(0, -1);
if (virRun(cmdargv, NULL) < 0) if (virRun(cmdargv, NULL) < 0)
return -1; return -1;
......
...@@ -322,7 +322,10 @@ storagePoolLookupByVolume(virStorageVolPtr vol) { ...@@ -322,7 +322,10 @@ storagePoolLookupByVolume(virStorageVolPtr vol) {
static virDrvOpenStatus static virDrvOpenStatus
storageOpen(virConnectPtr conn, storageOpen(virConnectPtr conn,
virConnectAuthPtr auth ATTRIBUTE_UNUSED, virConnectAuthPtr auth ATTRIBUTE_UNUSED,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
if (!driverState) if (!driverState)
return VIR_DRV_OPEN_DECLINED; return VIR_DRV_OPEN_DECLINED;
...@@ -516,13 +519,16 @@ cleanup: ...@@ -516,13 +519,16 @@ cleanup:
static virStoragePoolPtr static virStoragePoolPtr
storagePoolCreate(virConnectPtr conn, storagePoolCreate(virConnectPtr conn,
const char *xml, const char *xml,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virStorageDriverStatePtr driver = conn->storagePrivateData; virStorageDriverStatePtr driver = conn->storagePrivateData;
virStoragePoolDefPtr def; virStoragePoolDefPtr def;
virStoragePoolObjPtr pool = NULL; virStoragePoolObjPtr pool = NULL;
virStoragePoolPtr ret = NULL; virStoragePoolPtr ret = NULL;
virStorageBackendPtr backend; virStorageBackendPtr backend;
virCheckFlags(0, NULL);
storageDriverLock(driver); storageDriverLock(driver);
if (!(def = virStoragePoolDefParseString(xml))) if (!(def = virStoragePoolDefParseString(xml)))
goto cleanup; goto cleanup;
...@@ -567,12 +573,15 @@ cleanup: ...@@ -567,12 +573,15 @@ cleanup:
static virStoragePoolPtr static virStoragePoolPtr
storagePoolDefine(virConnectPtr conn, storagePoolDefine(virConnectPtr conn,
const char *xml, const char *xml,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virStorageDriverStatePtr driver = conn->storagePrivateData; virStorageDriverStatePtr driver = conn->storagePrivateData;
virStoragePoolDefPtr def; virStoragePoolDefPtr def;
virStoragePoolObjPtr pool = NULL; virStoragePoolObjPtr pool = NULL;
virStoragePoolPtr ret = NULL; virStoragePoolPtr ret = NULL;
virCheckFlags(0, NULL);
storageDriverLock(driver); storageDriverLock(driver);
if (!(def = virStoragePoolDefParseString(xml))) if (!(def = virStoragePoolDefParseString(xml)))
goto cleanup; goto cleanup;
...@@ -657,12 +666,15 @@ cleanup: ...@@ -657,12 +666,15 @@ cleanup:
static int static int
storagePoolStart(virStoragePoolPtr obj, storagePoolStart(virStoragePoolPtr obj,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virStorageDriverStatePtr driver = obj->conn->storagePrivateData; virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool; virStoragePoolObjPtr pool;
virStorageBackendPtr backend; virStorageBackendPtr backend;
int ret = -1; int ret = -1;
virCheckFlags(0, -1);
storageDriverLock(driver); storageDriverLock(driver);
pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid); pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid);
storageDriverUnlock(driver); storageDriverUnlock(driver);
...@@ -848,12 +860,15 @@ cleanup: ...@@ -848,12 +860,15 @@ cleanup:
static int static int
storagePoolRefresh(virStoragePoolPtr obj, storagePoolRefresh(virStoragePoolPtr obj,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virStorageDriverStatePtr driver = obj->conn->storagePrivateData; virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool; virStoragePoolObjPtr pool;
virStorageBackendPtr backend; virStorageBackendPtr backend;
int ret = -1; int ret = -1;
virCheckFlags(0, -1);
storageDriverLock(driver); storageDriverLock(driver);
pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid); pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid);
...@@ -940,11 +955,14 @@ cleanup: ...@@ -940,11 +955,14 @@ cleanup:
static char * static char *
storagePoolGetXMLDesc(virStoragePoolPtr obj, storagePoolGetXMLDesc(virStoragePoolPtr obj,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virStorageDriverStatePtr driver = obj->conn->storagePrivateData; virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool; virStoragePoolObjPtr pool;
char *ret = NULL; char *ret = NULL;
virCheckFlags(0, NULL);
storageDriverLock(driver); storageDriverLock(driver);
pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid); pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid);
storageDriverUnlock(driver); storageDriverUnlock(driver);
...@@ -1261,13 +1279,16 @@ static int storageVolumeDelete(virStorageVolPtr obj, unsigned int flags); ...@@ -1261,13 +1279,16 @@ static int storageVolumeDelete(virStorageVolPtr obj, unsigned int flags);
static virStorageVolPtr static virStorageVolPtr
storageVolumeCreateXML(virStoragePoolPtr obj, storageVolumeCreateXML(virStoragePoolPtr obj,
const char *xmldesc, const char *xmldesc,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virStorageDriverStatePtr driver = obj->conn->storagePrivateData; virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool; virStoragePoolObjPtr pool;
virStorageBackendPtr backend; virStorageBackendPtr backend;
virStorageVolDefPtr voldef = NULL; virStorageVolDefPtr voldef = NULL;
virStorageVolPtr ret = NULL, volobj = NULL; virStorageVolPtr ret = NULL, volobj = NULL;
virCheckFlags(0, NULL);
storageDriverLock(driver); storageDriverLock(driver);
pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid); pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid);
storageDriverUnlock(driver); storageDriverUnlock(driver);
...@@ -1383,7 +1404,8 @@ static virStorageVolPtr ...@@ -1383,7 +1404,8 @@ static virStorageVolPtr
storageVolumeCreateXMLFrom(virStoragePoolPtr obj, storageVolumeCreateXMLFrom(virStoragePoolPtr obj,
const char *xmldesc, const char *xmldesc,
virStorageVolPtr vobj, virStorageVolPtr vobj,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virStorageDriverStatePtr driver = obj->conn->storagePrivateData; virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool, origpool = NULL; virStoragePoolObjPtr pool, origpool = NULL;
virStorageBackendPtr backend; virStorageBackendPtr backend;
...@@ -1391,6 +1413,8 @@ storageVolumeCreateXMLFrom(virStoragePoolPtr obj, ...@@ -1391,6 +1413,8 @@ storageVolumeCreateXMLFrom(virStoragePoolPtr obj,
virStorageVolPtr ret = NULL, volobj = NULL; virStorageVolPtr ret = NULL, volobj = NULL;
int buildret; int buildret;
virCheckFlags(0, NULL);
storageDriverLock(driver); storageDriverLock(driver);
pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid); pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid);
if (pool && STRNEQ(obj->name, vobj->pool)) { if (pool && STRNEQ(obj->name, vobj->pool)) {
...@@ -2010,13 +2034,16 @@ cleanup: ...@@ -2010,13 +2034,16 @@ cleanup:
static char * static char *
storageVolumeGetXMLDesc(virStorageVolPtr obj, storageVolumeGetXMLDesc(virStorageVolPtr obj,
unsigned int flags ATTRIBUTE_UNUSED) { unsigned int flags)
{
virStorageDriverStatePtr driver = obj->conn->storagePrivateData; virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool; virStoragePoolObjPtr pool;
virStorageBackendPtr backend; virStorageBackendPtr backend;
virStorageVolDefPtr vol; virStorageVolDefPtr vol;
char *ret = NULL; char *ret = NULL;
virCheckFlags(0, NULL);
storageDriverLock(driver); storageDriverLock(driver);
pool = virStoragePoolObjFindByName(&driver->pools, obj->pool); pool = virStoragePoolObjFindByName(&driver->pools, obj->pool);
storageDriverUnlock(driver); storageDriverUnlock(driver);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册