VIR_LOG_INIT("storage.storage_driver");
-static virStorageDriverStatePtr driverState;
+static virStorageDriverStatePtr driver;
static int storageStateCleanup(void);
char *pool_name;
};
-static void storageDriverLock(virStorageDriverStatePtr driver)
+static void storageDriverLock(void)
{
virMutexLock(&driver->lock);
}
-static void storageDriverUnlock(virStorageDriverStatePtr driver)
+static void storageDriverUnlock(void)
{
virMutexUnlock(&driver->lock);
}
static void
-storageDriverAutostart(virStorageDriverStatePtr driver)
+storageDriverAutostart(void)
{
size_t i;
virConnectPtr conn = NULL;
/* XXX Remove hardcoding of QEMU URI */
- if (driverState->privileged)
+ if (driver->privileged)
conn = virConnectOpen("qemu:///system");
else
conn = virConnectOpen("qemu:///session");
{
char *base = NULL;
- if (VIR_ALLOC(driverState) < 0)
+ if (VIR_ALLOC(driver) < 0)
return -1;
- if (virMutexInit(&driverState->lock) < 0) {
- VIR_FREE(driverState);
+ if (virMutexInit(&driver->lock) < 0) {
+ VIR_FREE(driver);
return -1;
}
- storageDriverLock(driverState);
+ storageDriverLock();
if (privileged) {
if (VIR_STRDUP(base, SYSCONFDIR "/libvirt") < 0)
if (!base)
goto error;
}
- driverState->privileged = privileged;
+ driver->privileged = privileged;
/* Configuration paths are either $USER_CONFIG_HOME/libvirt/storage/... (session) or
* /etc/libvirt/storage/... (system).
*/
- if (virAsprintf(&driverState->configDir,
+ if (virAsprintf(&driver->configDir,
"%s/storage", base) == -1)
goto error;
- if (virAsprintf(&driverState->autostartDir,
+ if (virAsprintf(&driver->autostartDir,
"%s/storage/autostart", base) == -1)
goto error;
VIR_FREE(base);
- if (virStoragePoolLoadAllConfigs(&driverState->pools,
- driverState->configDir,
- driverState->autostartDir) < 0)
+ if (virStoragePoolLoadAllConfigs(&driver->pools,
+ driver->configDir,
+ driver->autostartDir) < 0)
goto error;
- storageDriverUnlock(driverState);
+ storageDriverUnlock();
return 0;
error:
VIR_FREE(base);
- storageDriverUnlock(driverState);
+ storageDriverUnlock();
storageStateCleanup();
return -1;
}
static void
storageStateAutoStart(void)
{
- if (!driverState)
+ if (!driver)
return;
- storageDriverLock(driverState);
- storageDriverAutostart(driverState);
- storageDriverUnlock(driverState);
+ storageDriverLock();
+ storageDriverAutostart();
+ storageDriverUnlock();
}
/**
static int
storageStateReload(void)
{
- if (!driverState)
+ if (!driver)
return -1;
- storageDriverLock(driverState);
- virStoragePoolLoadAllConfigs(&driverState->pools,
- driverState->configDir,
- driverState->autostartDir);
- storageDriverAutostart(driverState);
- storageDriverUnlock(driverState);
+ storageDriverLock();
+ virStoragePoolLoadAllConfigs(&driver->pools,
+ driver->configDir,
+ driver->autostartDir);
+ storageDriverAutostart();
+ storageDriverUnlock();
return 0;
}
static int
storageStateCleanup(void)
{
- if (!driverState)
+ if (!driver)
return -1;
- storageDriverLock(driverState);
+ storageDriverLock();
/* free inactive pools */
- virStoragePoolObjListFree(&driverState->pools);
+ virStoragePoolObjListFree(&driver->pools);
- VIR_FREE(driverState->configDir);
- VIR_FREE(driverState->autostartDir);
- storageDriverUnlock(driverState);
- virMutexDestroy(&driverState->lock);
- VIR_FREE(driverState);
+ VIR_FREE(driver->configDir);
+ VIR_FREE(driver->autostartDir);
+ storageDriverUnlock();
+ virMutexDestroy(&driver->lock);
+ VIR_FREE(driver);
return 0;
}
storagePoolLookupByUUID(virConnectPtr conn,
const unsigned char *uuid)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
virStoragePoolObjPtr pool;
virStoragePoolPtr ret = NULL;
- storageDriverLock(driver);
+ storageDriverLock();
pool = virStoragePoolObjFindByUUID(&driver->pools, uuid);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
if (!pool) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
storagePoolLookupByName(virConnectPtr conn,
const char *name)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
virStoragePoolObjPtr pool;
virStoragePoolPtr ret = NULL;
- storageDriverLock(driver);
+ storageDriverLock();
pool = virStoragePoolObjFindByName(&driver->pools, name);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
if (!pool) {
virReportError(VIR_ERR_NO_STORAGE_POOL,
static virStoragePoolPtr
storagePoolLookupByVolume(virStorageVolPtr vol)
{
- virStorageDriverStatePtr driver = vol->conn->storagePrivateData;
virStoragePoolObjPtr pool;
virStoragePoolPtr ret = NULL;
- storageDriverLock(driver);
+ storageDriverLock();
pool = virStoragePoolObjFindByName(&driver->pools, vol->pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
if (!pool) {
virReportError(VIR_ERR_NO_STORAGE_POOL,
}
static virDrvOpenStatus
-storageOpen(virConnectPtr conn,
+storageOpen(virConnectPtr conn ATTRIBUTE_UNUSED,
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
unsigned int flags)
{
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
- if (!driverState)
+ if (!driver)
return VIR_DRV_OPEN_DECLINED;
- conn->storagePrivateData = driverState;
return VIR_DRV_OPEN_SUCCESS;
}
static int
-storageClose(virConnectPtr conn)
+storageClose(virConnectPtr conn ATTRIBUTE_UNUSED)
{
- conn->storagePrivateData = NULL;
return 0;
}
static int
storageConnectNumOfStoragePools(virConnectPtr conn)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
size_t i;
int nactive = 0;
if (virConnectNumOfStoragePoolsEnsureACL(conn) < 0)
return -1;
- storageDriverLock(driver);
+ storageDriverLock();
for (i = 0; i < driver->pools.count; i++) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
virStoragePoolObjLock(obj);
nactive++;
virStoragePoolObjUnlock(obj);
}
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return nactive;
}
char **const names,
int nnames)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
int got = 0;
size_t i;
if (virConnectListStoragePoolsEnsureACL(conn) < 0)
return -1;
- storageDriverLock(driver);
+ storageDriverLock();
for (i = 0; i < driver->pools.count && got < nnames; i++) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
virStoragePoolObjLock(obj);
}
virStoragePoolObjUnlock(obj);
}
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return got;
cleanup:
- storageDriverUnlock(driver);
+ storageDriverUnlock();
for (i = 0; i < got; i++)
VIR_FREE(names[i]);
memset(names, 0, nnames * sizeof(*names));
static int
storageConnectNumOfDefinedStoragePools(virConnectPtr conn)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
size_t i;
int nactive = 0;
if (virConnectNumOfDefinedStoragePoolsEnsureACL(conn) < 0)
return -1;
- storageDriverLock(driver);
+ storageDriverLock();
for (i = 0; i < driver->pools.count; i++) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
virStoragePoolObjLock(obj);
nactive++;
virStoragePoolObjUnlock(obj);
}
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return nactive;
}
char **const names,
int nnames)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
int got = 0;
size_t i;
if (virConnectListDefinedStoragePoolsEnsureACL(conn) < 0)
return -1;
- storageDriverLock(driver);
+ storageDriverLock();
for (i = 0; i < driver->pools.count && got < nnames; i++) {
virStoragePoolObjPtr obj = driver->pools.objs[i];
virStoragePoolObjLock(obj);
}
virStoragePoolObjUnlock(obj);
}
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return got;
cleanup:
- storageDriverUnlock(driver);
+ storageDriverUnlock();
for (i = 0; i < got; i++) {
VIR_FREE(names[i]);
}
static virStoragePoolObjPtr
virStoragePoolObjFromStoragePool(virStoragePoolPtr pool)
{
- virStorageDriverStatePtr driver = pool->conn->storagePrivateData;
char uuidstr[VIR_UUID_STRING_BUFLEN];
virStoragePoolObjPtr ret;
- storageDriverLock(driver);
+ storageDriverLock();
if (!(ret = virStoragePoolObjFindByUUID(&driver->pools, pool->uuid))) {
virUUIDFormat(pool->uuid, uuidstr);
virReportError(VIR_ERR_NO_STORAGE_POOL,
_("no storage pool with matching uuid '%s' (%s)"),
uuidstr, pool->name);
}
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
const char *xml,
unsigned int flags)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
virStoragePoolDefPtr def;
virStoragePoolObjPtr pool = NULL;
virStoragePoolPtr ret = NULL;
virCheckFlags(0, NULL);
- storageDriverLock(driver);
+ storageDriverLock();
if (!(def = virStoragePoolDefParseString(xml)))
goto cleanup;
virStoragePoolDefFree(def);
if (pool)
virStoragePoolObjUnlock(pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
const char *xml,
unsigned int flags)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
virStoragePoolDefPtr def;
virStoragePoolObjPtr pool = NULL;
virStoragePoolPtr ret = NULL;
virCheckFlags(0, NULL);
- storageDriverLock(driver);
+ storageDriverLock();
if (!(def = virStoragePoolDefParseString(xml)))
goto cleanup;
virStoragePoolDefFree(def);
if (pool)
virStoragePoolObjUnlock(pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
static int
storagePoolUndefine(virStoragePoolPtr obj)
{
- virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool;
int ret = -1;
- storageDriverLock(driver);
+ storageDriverLock();
if (!(pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid))) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(obj->uuid, uuidstr);
cleanup:
if (pool)
virStoragePoolObjUnlock(pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
static int
storagePoolDestroy(virStoragePoolPtr obj)
{
- virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool;
virStorageBackendPtr backend;
int ret = -1;
- storageDriverLock(driver);
+ storageDriverLock();
if (!(pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid))) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(obj->uuid, uuidstr);
cleanup:
if (pool)
virStoragePoolObjUnlock(pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
storagePoolRefresh(virStoragePoolPtr obj,
unsigned int flags)
{
- virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool;
virStorageBackendPtr backend;
int ret = -1;
virCheckFlags(0, -1);
- storageDriverLock(driver);
+ storageDriverLock();
if (!(pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid))) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(obj->uuid, uuidstr);
cleanup:
if (pool)
virStoragePoolObjUnlock(pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
storagePoolSetAutostart(virStoragePoolPtr obj,
int autostart)
{
- virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool;
int ret = -1;
- storageDriverLock(driver);
+ storageDriverLock();
pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid);
if (!pool) {
cleanup:
if (pool)
virStoragePoolObjUnlock(pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
storageVolLookupByKey(virConnectPtr conn,
const char *key)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
size_t i;
virStorageVolPtr ret = NULL;
- storageDriverLock(driver);
+ storageDriverLock();
for (i = 0; i < driver->pools.count && !ret; i++) {
virStoragePoolObjLock(driver->pools.objs[i]);
if (virStoragePoolObjIsActive(driver->pools.objs[i])) {
_("no storage vol with matching key %s"), key);
cleanup:
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
storageVolLookupByPath(virConnectPtr conn,
const char *path)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
size_t i;
virStorageVolPtr ret = NULL;
char *cleanpath;
if (!cleanpath)
return NULL;
- storageDriverLock(driver);
+ storageDriverLock();
for (i = 0; i < driver->pools.count && !ret; i++) {
virStoragePoolObjPtr pool = driver->pools.objs[i];
virStorageVolDefPtr vol;
cleanup:
VIR_FREE(cleanpath);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
return ret;
}
virStoragePoolObjPtr *pool,
virStorageBackendPtr *backend)
{
- virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStorageVolDefPtr vol = NULL;
*pool = NULL;
- storageDriverLock(driver);
+ storageDriverLock();
*pool = virStoragePoolObjFindByName(&driver->pools, obj->pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
if (!*pool) {
virReportError(VIR_ERR_NO_STORAGE_POOL,
const char *xmldesc,
unsigned int flags)
{
- virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool;
virStorageBackendPtr backend;
virStorageVolDefPtr voldef = NULL;
buildret = backend->buildVol(obj->conn, pool, buildvoldef, flags);
- storageDriverLock(driver);
+ storageDriverLock();
virStoragePoolObjLock(pool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
voldef->building = false;
pool->asyncjobs--;
virStorageVolPtr vobj,
unsigned int flags)
{
- virStorageDriverStatePtr driver = obj->conn->storagePrivateData;
virStoragePoolObjPtr pool, origpool = NULL;
virStorageBackendPtr backend;
virStorageVolDefPtr origvol = NULL, newvol = NULL;
virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, NULL);
- storageDriverLock(driver);
+ storageDriverLock();
pool = virStoragePoolObjFindByUUID(&driver->pools, obj->uuid);
if (pool && STRNEQ(obj->name, vobj->pool)) {
virStoragePoolObjUnlock(pool);
origpool = virStoragePoolObjFindByName(&driver->pools, vobj->pool);
virStoragePoolObjLock(pool);
}
- storageDriverUnlock(driver);
+ storageDriverUnlock();
if (!pool) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(obj->uuid, uuidstr);
buildret = backend->buildVolFrom(obj->conn, pool, newvol, origvol, flags);
- storageDriverLock(driver);
+ storageDriverLock();
virStoragePoolObjLock(pool);
if (origpool)
virStoragePoolObjLock(origpool);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
origvol->in_use--;
newvol->building = false;
virStoragePoolObjPtr pool = NULL;
virStorageBackendPtr backend;
- storageDriverLock(driverState);
- if (!(pool = virStoragePoolObjFindByName(&driverState->pools,
+ storageDriverLock();
+ if (!(pool = virStoragePoolObjFindByName(&driver->pools,
cbdata->pool_name)))
goto cleanup;
cleanup:
if (pool)
virStoragePoolObjUnlock(pool);
- storageDriverUnlock(driverState);
+ storageDriverUnlock();
virStorageVolPoolRefreshDataFree(cbdata);
}
virStoragePoolPtr **pools,
unsigned int flags)
{
- virStorageDriverStatePtr driver = conn->storagePrivateData;
int ret = -1;
virCheckFlags(VIR_CONNECT_LIST_STORAGE_POOLS_FILTERS_ALL, -1);
if (virConnectListAllStoragePoolsEnsureACL(conn) < 0)
goto cleanup;
- storageDriverLock(driver);
+ storageDriverLock();
ret = virStoragePoolObjListExport(conn, driver->pools, pools,
virConnectListAllStoragePoolsCheckACL, flags);
- storageDriverUnlock(driver);
+ storageDriverUnlock();
cleanup:
return ret;