mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
tests: drivermodule: Make sure that all compiled storage backends can be loaded
Add a new storage driver registration function that will force the backend code to fail if any of the storage backend modules can't be loaded. This will make sure that they work and are present.
This commit is contained in:
parent
0a6d3e51b4
commit
93a3f516ee
@ -87,7 +87,8 @@ static size_t virStorageFileBackendsCount;
|
||||
|
||||
static int
|
||||
virStorageDriverLoadBackendModule(const char *name,
|
||||
const char *regfunc)
|
||||
const char *regfunc,
|
||||
bool forceload)
|
||||
{
|
||||
char *modfile = NULL;
|
||||
int ret;
|
||||
@ -100,7 +101,14 @@ virStorageDriverLoadBackendModule(const char *name,
|
||||
"LIBVIRT_STORAGE_BACKEND_DIR")))
|
||||
return 1;
|
||||
|
||||
ret = virDriverLoadModuleFull(modfile, regfunc, NULL);
|
||||
if ((ret = virDriverLoadModuleFull(modfile, regfunc, NULL)) != 0) {
|
||||
if (forceload) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("failed to load storage backend module '%s'"),
|
||||
name);
|
||||
ret = -1;
|
||||
}
|
||||
}
|
||||
|
||||
VIR_FREE(modfile);
|
||||
|
||||
@ -109,7 +117,7 @@ virStorageDriverLoadBackendModule(const char *name,
|
||||
|
||||
|
||||
# define VIR_STORAGE_BACKEND_REGISTER(func, module) \
|
||||
if (virStorageDriverLoadBackendModule(module, #func) < 0) \
|
||||
if (virStorageDriverLoadBackendModule(module, #func, allbackends) < 0) \
|
||||
return -1
|
||||
#else
|
||||
# define VIR_STORAGE_BACKEND_REGISTER(func, module) \
|
||||
@ -118,7 +126,7 @@ virStorageDriverLoadBackendModule(const char *name,
|
||||
#endif
|
||||
|
||||
int
|
||||
virStorageBackendDriversRegister(void)
|
||||
virStorageBackendDriversRegister(bool allbackends ATTRIBUTE_UNUSED)
|
||||
{
|
||||
#if WITH_STORAGE_DIR || WITH_STORAGE_FS
|
||||
VIR_STORAGE_BACKEND_REGISTER(virStorageBackendFsRegister, "fs");
|
||||
|
@ -198,7 +198,7 @@ struct _virStorageFileBackend {
|
||||
virStorageFileBackendChown storageFileChown;
|
||||
};
|
||||
|
||||
int virStorageBackendDriversRegister(void);
|
||||
int virStorageBackendDriversRegister(bool allmodules);
|
||||
|
||||
int virStorageBackendRegister(virStorageBackendPtr backend);
|
||||
int virStorageBackendFileRegister(virStorageFileBackendPtr backend);
|
||||
|
@ -2838,9 +2838,10 @@ static virStateDriver stateDriver = {
|
||||
.stateReload = storageStateReload,
|
||||
};
|
||||
|
||||
int storageRegister(void)
|
||||
static int
|
||||
storageRegisterFull(bool allbackends)
|
||||
{
|
||||
if (virStorageBackendDriversRegister() < 0)
|
||||
if (virStorageBackendDriversRegister(allbackends) < 0)
|
||||
return -1;
|
||||
if (virSetSharedStorageDriver(&storageDriver) < 0)
|
||||
return -1;
|
||||
@ -2850,6 +2851,20 @@ int storageRegister(void)
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
storageRegister(void)
|
||||
{
|
||||
return storageRegisterFull(false);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
storageRegisterAll(void)
|
||||
{
|
||||
return storageRegisterFull(true);
|
||||
}
|
||||
|
||||
|
||||
/* ----------- file handlers cooperating with storage driver --------------- */
|
||||
static bool
|
||||
virStorageFileIsInitialized(const virStorageSource *src)
|
||||
|
@ -70,5 +70,6 @@ char *virStoragePoolObjBuildTempFilePath(virStoragePoolObjPtr pool,
|
||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
||||
|
||||
int storageRegister(void);
|
||||
int storageRegisterAll(void);
|
||||
|
||||
#endif /* __VIR_STORAGE_DRIVER_H__ */
|
||||
|
@ -71,7 +71,7 @@ mymain(void)
|
||||
TEST("interface");
|
||||
#endif
|
||||
#ifdef WITH_STORAGE
|
||||
TEST("storage");
|
||||
TEST_FULL("storage", "storageRegisterAll");
|
||||
#endif
|
||||
#ifdef WITH_NODE_DEVICES
|
||||
TEST("nodedev");
|
||||
|
@ -732,7 +732,7 @@ mymain(void)
|
||||
virStorageSourcePtr chain2; /* short for chain->backingStore */
|
||||
virStorageSourcePtr chain3; /* short for chain2->backingStore */
|
||||
|
||||
if (virStorageBackendDriversRegister() < 0)
|
||||
if (virStorageBackendDriversRegister(false) < 0)
|
||||
return -1;
|
||||
|
||||
/* Prep some files with qemu-img; if that is not found on PATH, or
|
||||
|
Loading…
Reference in New Issue
Block a user