mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-26 06:25:19 +00:00
07a9c8bae8
https://bugzilla.redhat.com/show_bug.cgi?id=1685151 This reverts commit e4a969092bda5b3b952963fdf6658895165040b7. Now that drivers may call virConnectOpen() on secondary drivers, it doesn't make much sense to have autostart separated from driver initialization callback. In fact, it creates a problem because one driver during its initialization might try to fetch an object from another driver but since the object is yet to be autostarted the fetch fails. This has been observed in reality: qemu driver performs qemuProcessReconnect() during qemu's stateInitialize phase which may call virDomainDiskTranslateSourcePool() which connects to the storage driver to look up the volume. But the storage driver did not autostart its pools yet therefore volume lookup fails and the domain is killed. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
55 lines
1.5 KiB
C
55 lines
1.5 KiB
C
/*
|
|
* driver-state.h: entry points for state drivers
|
|
*
|
|
* Copyright (C) 2006-2014 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/>.
|
|
*/
|
|
|
|
#ifndef LIBVIRT_DRIVER_STATE_H
|
|
# define LIBVIRT_DRIVER_STATE_H
|
|
|
|
# ifndef __VIR_DRIVER_H_INCLUDES___
|
|
# error "Don't include this file directly, only use driver.h"
|
|
# endif
|
|
|
|
typedef int
|
|
(*virDrvStateInitialize)(bool privileged,
|
|
virStateInhibitCallback callback,
|
|
void *opaque);
|
|
|
|
typedef int
|
|
(*virDrvStateCleanup)(void);
|
|
|
|
typedef int
|
|
(*virDrvStateReload)(void);
|
|
|
|
typedef int
|
|
(*virDrvStateStop)(void);
|
|
|
|
typedef struct _virStateDriver virStateDriver;
|
|
typedef virStateDriver *virStateDriverPtr;
|
|
|
|
struct _virStateDriver {
|
|
const char *name;
|
|
virDrvStateInitialize stateInitialize;
|
|
virDrvStateCleanup stateCleanup;
|
|
virDrvStateReload stateReload;
|
|
virDrvStateStop stateStop;
|
|
};
|
|
|
|
|
|
#endif /* LIBVIRT_DRIVER_STATE_H */
|