[libvirt] [PATCH 2/2] virStateDriver - Separate AutoStart from Initialize
John Ferlan
jferlan at redhat.com
Thu Jul 25 20:24:24 UTC 2013
On 07/25/2013 02:41 PM, Daniel P. Berrange wrote:
> On Thu, Jul 25, 2013 at 02:32:57PM -0400, John Ferlan wrote:
>> Adjust these drivers to handle their Autostart functionality after each
>> of the drivers has gone through their Initialization functions
>>
>> merge
>> ---
>> src/libxl/libxl_driver.c | 18 +++++++++++++++---
>> src/lxc/lxc_driver.c | 18 ++++++++++++++++--
>> src/network/bridge_driver.c | 20 +++++++++++++++++++-
>> src/qemu/qemu_driver.c | 18 ++++++++++++++++--
>> src/storage/storage_driver.c | 19 ++++++++++++++++++-
>> src/uml/uml_driver.c | 18 ++++++++++++++++--
>> 6 files changed, 100 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
>> index 98b1985..3dc8b32 100644
>> --- a/src/libxl/libxl_driver.c
>> +++ b/src/libxl/libxl_driver.c
>> @@ -1348,9 +1348,6 @@ libxlStateInitialize(bool privileged,
>> NULL, NULL) < 0)
>> goto error;
>>
>> - virDomainObjListForEach(libxl_driver->domains, libxlAutostartDomain,
>> - libxl_driver);
>> -
>> virDomainObjListForEach(libxl_driver->domains, libxlDomainManagedSaveLoad,
>> libxl_driver);
>>
>> @@ -1369,6 +1366,20 @@ fail:
>> }
>>
>> static int
>> +libxlStateAutoStart(void)
>> +{
>> + if (!libxl_driver)
>> + return 0;
>> +
>> + libxlDriverLock(libxl_driver);
>> + virDomainObjListForEach(libxl_driver->domains, libxlAutostartDomain,
>> + libxl_driver);
>> + libxlDriverUnlock(libxl_driver);
>> +
>> + return 0;
>> +}
>> +
>> +static int
>> libxlStateReload(void)
>> {
>> if (!libxl_driver)
>> @@ -4887,6 +4898,7 @@ static virDriver libxlDriver = {
>> static virStateDriver libxlStateDriver = {
>> .name = "LIBXL",
>> .stateInitialize = libxlStateInitialize,
>> + .stateAutoStart = libxlStateAutoStart,
>> .stateCleanup = libxlStateCleanup,
>> .stateReload = libxlStateReload,
>> };
>> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
>> index 21cf2e3..75c03e0 100644
>> --- a/src/lxc/lxc_driver.c
>> +++ b/src/lxc/lxc_driver.c
>> @@ -1455,8 +1455,6 @@ static int lxcStateInitialize(bool privileged,
>> NULL, NULL) < 0)
>> goto cleanup;
>>
>> - virLXCProcessAutostartAll(lxc_driver);
>> -
>> virNWFilterRegisterCallbackDriver(&lxcCallbackDriver);
>> return 0;
>>
>> @@ -1466,6 +1464,21 @@ cleanup:
>> return -1;
>> }
>>
>> +/**
>> + * lxcStateAutoStart:
>> + *
>> + * Function to autostart the LXC daemons
>> + */
>> +static int lxcStateAutoStart(void)
>> +{
>> + if (!lxc_driver)
>> + return 0;
>> +
>> + virLXCProcessAutostartAll(lxc_driver);
>> +
>> + return 0;
>> +}
>> +
>> static void lxcNotifyLoadDomain(virDomainObjPtr vm, int newVM, void *opaque)
>> {
>> virLXCDriverPtr driver = opaque;
>> @@ -4665,6 +4678,7 @@ static virDriver lxcDriver = {
>> static virStateDriver lxcStateDriver = {
>> .name = LXC_DRIVER_NAME,
>> .stateInitialize = lxcStateInitialize,
>> + .stateAutoStart = lxcStateAutoStart,
>> .stateCleanup = lxcStateCleanup,
>> .stateReload = lxcStateReload,
>> };
>> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
>> index 0bb57ea..98dea9e 100644
>> --- a/src/network/bridge_driver.c
>> +++ b/src/network/bridge_driver.c
>> @@ -430,7 +430,6 @@ networkStateInitialize(bool privileged,
>> networkFindActiveConfigs(driverState);
>> networkReloadFirewallRules(driverState);
>> networkRefreshDaemons(driverState);
>> - networkAutostartConfigs(driverState);
>>
>> networkDriverUnlock(driverState);
>>
>> @@ -474,6 +473,24 @@ error:
>> }
>>
>> /**
>> + * networkStateAutoStart:
>> + *
>> + * Function to AutoStart the bridge configs
>> + */
>> +static int
>> +networkStateAutoStart(void)
>> +{
>> + if (!driverState)
>> + return 0;
>> +
>> + networkDriverLock(driverState);
>> + networkAutostartConfigs(driverState);
>> + networkDriverUnlock(driverState);
>> +
>> + return 0;
>> +}
>> +
>> +/**
>> * networkStateReload:
>> *
>> * Function to restart the QEmu daemon, it will recheck the configuration
>> @@ -3693,6 +3710,7 @@ static virNetworkDriver networkDriver = {
>> static virStateDriver networkStateDriver = {
>> .name = "Network",
>> .stateInitialize = networkStateInitialize,
>> + .stateAutoStart = networkStateAutoStart,
>> .stateCleanup = networkStateCleanup,
>> .stateReload = networkStateReload,
>> };
>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>> index 2adf6e2..ec909b3 100644
>> --- a/src/qemu/qemu_driver.c
>> +++ b/src/qemu/qemu_driver.c
>> @@ -837,8 +837,6 @@ qemuStateInitialize(bool privileged,
>> if (!qemu_driver->workerPool)
>> goto error;
>>
>> - qemuAutostartDomains(qemu_driver);
>> -
>> if (conn)
>> virConnectClose(conn);
>>
>> @@ -855,6 +853,21 @@ error:
>> return -1;
>> }
>>
>> +/**
>> + * qemuStateAutoStart:
>> + *
>> + * Function to auto start the QEmu daemons
>> + */
>> +static int
>> +qemuStateAutoStart(void)
>> +{
>> + if (!qemu_driver)
>> + return 0;
>> +
>> + qemuAutostartDomains(qemu_driver);
>> + return 0;
>> +}
>> +
>> static void qemuNotifyLoadDomain(virDomainObjPtr vm, int newVM, void *opaque)
>> {
>> virQEMUDriverPtr driver = opaque;
>> @@ -16276,6 +16289,7 @@ static virDriver qemuDriver = {
>> static virStateDriver qemuStateDriver = {
>> .name = "QEMU",
>> .stateInitialize = qemuStateInitialize,
>> + .stateAutoStart = qemuStateAutoStart,
>> .stateCleanup = qemuStateCleanup,
>> .stateReload = qemuStateReload,
>> .stateStop = qemuStateStop,
>> diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
>> index 4f0c631..e71a190 100644
>> --- a/src/storage/storage_driver.c
>> +++ b/src/storage/storage_driver.c
>> @@ -182,7 +182,6 @@ storageStateInitialize(bool privileged,
>> driverState->configDir,
>> driverState->autostartDir) < 0)
>> goto error;
>> - storageDriverAutostart(driverState);
>>
>> storageDriverUnlock(driverState);
>> return 0;
>> @@ -195,6 +194,23 @@ error:
>> }
>>
>> /**
>> + * storageStateAutoStart:
>> + *
>> + * Function to auto start the storage driver
>> + */
>> +static int
>> +storageStateAutoStart(void)
>> +{
>> + if (!driverState)
>> + return -1;
>
> This should have been '0' not '-1' like all the other changes.
>
> That said, I think this function should in fact just be void
> removing any return value requirement
>
> Daniel
>
I think I was following the Reload function here for return value,
although I'm fine with void too. I went back and forth on int or void
for all of them and then for this one back and forth on return value.
E.G.:
static int
storageStateReload(void) {
if (!driverState)
return -1;
John
More information about the libvir-list
mailing list