Re-arrange storage backend registration

This commit is contained in:
Daniel P. Berrange 2008-11-11 15:52:16 +00:00
parent 9b7fd9c4ae
commit 8a8826600c
4 changed files with 55 additions and 33 deletions

View File

@ -1,3 +1,9 @@
Tue Nov 11 15:51:42 GMT 2008 Daniel P. Berrange <berrange@redhat.com>
* src/storage_backend.c, src/storage_backend.h, src/storage_driver.c:
Decouple backend impls from generic backend code, by making driver
register backends at startup
Mon Nov 10 12:05:42 GMT 2008 Daniel P. Berrange <berrange@redhat.com> Mon Nov 10 12:05:42 GMT 2008 Daniel P. Berrange <berrange@redhat.com>
* src/openvz_conf.c: Read filesytem template name from config * src/openvz_conf.c: Read filesytem template name from config

View File

@ -47,49 +47,27 @@
#include "storage_backend.h" #include "storage_backend.h"
#if WITH_STORAGE_LVM
#include "storage_backend_logical.h"
#endif
#if WITH_STORAGE_ISCSI
#include "storage_backend_iscsi.h"
#endif
#if WITH_STORAGE_DISK
#include "storage_backend_disk.h"
#endif
#if WITH_STORAGE_DIR
#include "storage_backend_fs.h"
#endif
VIR_ENUM_IMPL(virStorageBackendPartTable, VIR_ENUM_IMPL(virStorageBackendPartTable,
VIR_STORAGE_POOL_DISK_LAST, VIR_STORAGE_POOL_DISK_LAST,
"unknown", "dos", "dvh", "gpt", "unknown", "dos", "dvh", "gpt",
"mac", "bsd", "pc98", "sun", "lvm2"); "mac", "bsd", "pc98", "sun", "lvm2");
static virStorageBackendPtr backends[] = { static unsigned nbackends = 0;
#if WITH_STORAGE_DIR static virStorageBackendPtr *backends = NULL;
&virStorageBackendDirectory,
#endif
#if WITH_STORAGE_FS
&virStorageBackendFileSystem,
&virStorageBackendNetFileSystem,
#endif
#if WITH_STORAGE_LVM
&virStorageBackendLogical,
#endif
#if WITH_STORAGE_ISCSI
&virStorageBackendISCSI,
#endif
#if WITH_STORAGE_DISK
&virStorageBackendDisk,
#endif
NULL
};
int virStorageBackendRegister(virStorageBackendPtr bk) {
if (VIR_REALLOC_N(backends, nbackends+1) < 0)
return -1;
backends[nbackends++] = bk;
return 0;
}
virStorageBackendPtr virStorageBackendPtr
virStorageBackendForType(int type) { virStorageBackendForType(int type) {
unsigned int i; unsigned int i;
for (i = 0; backends[i]; i++) for (i = 0; i < nbackends; i++)
if (backends[i]->type == type) if (backends[i]->type == type)
return backends[i]; return backends[i];

View File

@ -121,6 +121,7 @@ struct _virStorageBackend {
int volType; int volType;
}; };
int virStorageBackendRegister(virStorageBackendPtr bk);
virStorageBackendPtr virStorageBackendForType(int type); virStorageBackendPtr virStorageBackendForType(int type);
virStorageBackendPoolOptionsPtr virStorageBackendPoolOptionsForType(int type); virStorageBackendPoolOptionsPtr virStorageBackendPoolOptionsForType(int type);

View File

@ -41,6 +41,20 @@
#include "memory.h" #include "memory.h"
#include "storage_backend.h" #include "storage_backend.h"
#if WITH_STORAGE_LVM
#include "storage_backend_logical.h"
#endif
#if WITH_STORAGE_ISCSI
#include "storage_backend_iscsi.h"
#endif
#if WITH_STORAGE_DISK
#include "storage_backend_disk.h"
#endif
#if WITH_STORAGE_DIR
#include "storage_backend_fs.h"
#endif
#define storageLog(msg...) fprintf(stderr, msg) #define storageLog(msg...) fprintf(stderr, msg)
static virStorageDriverStatePtr driverState; static virStorageDriverStatePtr driverState;
@ -97,6 +111,29 @@ storageDriverStartup(void) {
char *base = NULL; char *base = NULL;
char driverConf[PATH_MAX]; char driverConf[PATH_MAX];
#if WITH_STORAGE_DIR
if (virStorageBackendRegister(&virStorageBackendDirectory) < 0)
return -1;
#endif
#if WITH_STORAGE_FS
if (virStorageBackendRegister(&virStorageBackendFileSystem) < 0)
return -1;
if (virStorageBackendRegister(&virStorageBackendNetFileSystem) < 0)
return -1;
#endif
#if WITH_STORAGE_LVM
if (virStorageBackendRegister(&virStorageBackendLogical) < 0)
return -1;
#endif
#if WITH_STORAGE_ISCSI
if (virStorageBackendRegister(&virStorageBackendISCSI) < 0)
return -1;
#endif
#if WITH_STORAGE_DISK
if (virStorageBackendRegister(&virStorageBackendDisk) < 0)
return -1;
#endif
if (VIR_ALLOC(driverState) < 0) if (VIR_ALLOC(driverState) < 0)
return -1; return -1;