On 01/30/2013 01:11 PM, Osier Yang wrote: > This creates src/conf/domain_storage.h and src/conf/storage_conf.c, > which defines a driver contains internal APIs to glue the domain > and storage. Currently there is only one API, translateDiskSourcePool, > which is to translate the specified pool/volume into the the real > underlying disk source. Later patch will implement API. > --- > src/Makefile.am | 3 ++- > src/conf/domain_storage.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ > src/conf/domain_storage.h | 37 +++++++++++++++++++++++++++++++++++++ > src/libvirt_private.syms | 4 ++++ > 4 files changed, 87 insertions(+), 1 deletions(-) > create mode 100644 src/conf/domain_storage.c > create mode 100644 src/conf/domain_storage.h > > diff --git a/src/Makefile.am b/src/Makefile.am > index 070a089..d664c48 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -203,7 +203,8 @@ DOMAIN_CONF_SOURCES = \ > conf/domain_conf.c conf/domain_conf.h \ > conf/domain_audit.c conf/domain_audit.h \ > conf/domain_nwfilter.c conf/domain_nwfilter.h \ > - conf/snapshot_conf.c conf/snapshot_conf.h > + conf/snapshot_conf.c conf/snapshot_conf.h \ > + conf/domain_storage.c conf/domain_storage.h > > DOMAIN_EVENT_SOURCES = \ > conf/domain_event.c conf/domain_event.h > diff --git a/src/conf/domain_storage.c b/src/conf/domain_storage.c > new file mode 100644 > index 0000000..299e9fd > --- /dev/null > +++ b/src/conf/domain_storage.c > @@ -0,0 +1,44 @@ > +/* > + * domain_storage.c: Internal APIs to glue domain and storage > + * > + * Copyright (C) 2013 Red Hat, Inc. > + * > + * 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 > + * License along with this library. If not, see > + * <http://www.gnu.org/licenses/>. > + * > + * Author: Osier Yang <jyang@xxxxxxxxxx> > + */ > + > +#include <config.h> > + > +#include "internal.h" > + > +#include "datatypes.h" > +#include "domain_conf.h" > +#include "domain_storage.h" > + > +static virDomainStorageDriverPtr domainStorageDriver; > + > +void > +virRegisterDomainStorageDriver(virDomainStorageDriverPtr driver) { > + domainStorageDriver = driver; > +} This differs from what I read w/r/t what I read in HACKING which seems to use: void function(args) { code; } > + > +int > +virDomainStorageTranslateDiskSourcePool(virConnectPtr conn, > + virDomainDefPtr def) { > + if (domainStorageDriver != NULL) > + return domainStorageDriver->translateDiskSourcePool(conn, def); > + return 0; > +} > diff --git a/src/conf/domain_storage.h b/src/conf/domain_storage.h > new file mode 100644 > index 0000000..143b476 > --- /dev/null > +++ b/src/conf/domain_storage.h > @@ -0,0 +1,37 @@ > +/* > + * domain_storage.h: Internal APIs to glue domain and storage > + * > + * Copyright (C) 2013 Red Hat, Inc. > + * > + * 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 > + * License along with this library. If not, see > + * <http://www.gnu.org/licenses/>. > + * > + * Author: Osier Yang <jyang@xxxxxxxxxx> > + */ > +#ifndef DOMAIN_STORAGE_H > +# define DOMAIN_STORAGE_H > + > +typedef int (*virDomainStorageDiskSourcePoolTranslate)(virConnectPtr conn, > + virDomainDefPtr def); > +struct _virDomainStorageDriver { > + virDomainStorageDiskSourcePoolTranslate translateDiskSourcePool; > +}; > +typedef struct _virDomainStorageDriver virDomainStorageDriver; > +typedef virDomainStorageDriver *virDomainStorageDriverPtr; > + > +void virRegisterDomainStorageDriver(virDomainStorageDriverPtr driver); > +int virDomainStorageTranslateDiskSourcePool(virConnectPtr conn, > + virDomainDefPtr def); > + > +#endif /* DOMAIN_STORAGE_H */ > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > index c589236..a44f3ff 100644 > --- a/src/libvirt_private.syms > +++ b/src/libvirt_private.syms > @@ -617,6 +617,10 @@ virDomainConfNWFilterTeardown; > virDomainConfVMNWFilterTeardown; > > > +# domain_storage.h > +virDomainStorageTranslateDiskSourcePool; > +virRegisterDomainStorageDriver; > + > # ebtables.h > ebtablesAddForwardAllowIn; > ebtablesAddForwardPolicyReject; > ACK -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list