[libvirt] [PATCHv2] Device{Attach, Detach}: Document S4 limitations

https://bugzilla.redhat.com/show_bug.cgi?id=808463 Well, libvirt doesn't distinguish between domain poweroff and hibernation (S4). It's hard to differentiate these two on a real machine anyway. As a result, any device that is hot(un-)plugged is lost (appears again) when domain is started again as from our POV it is a fresh cold boot. Instead of doing anything wise here, we should just document this as known limitation. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/libvirt.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libvirt.c b/src/libvirt.c index b6c99c5..79071db 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -10319,6 +10319,10 @@ virNodeGetSecurityModel(virConnectPtr conn, virSecurityModelPtr secmodel) * in an existing CDROM/Floppy device, however, applications are * recommended to use the virDomainUpdateDeviceFlag method instead. * + * Be aware that hotplug changes might not persist across a domain going + * into S4 state (also known as hibernation) unless you also modify the + * persistent domain definition. + * * Returns 0 in case of success, -1 in case of failure. */ int @@ -10374,6 +10378,10 @@ virDomainAttachDevice(virDomainPtr domain, const char *xml) * in an existing CDROM/Floppy device, however, applications are * recommended to use the virDomainUpdateDeviceFlag method instead. * + * Be aware that hotplug changes might not persist across a domain going + * into S4 state (also known as hibernation) unless you also modify the + * persistent domain definition. + * * Returns 0 in case of success, -1 in case of failure. */ int @@ -10416,6 +10424,10 @@ virDomainAttachDeviceFlags(virDomainPtr domain, * Destroy a virtual device attachment to backend. This function, * having hot-unplug semantics, is only allowed on an active domain. * + * Be aware that hotplug changes might not persist across a domain going + * into S4 state (also known as hibernation) unless you also modify the + * persistent domain definition. + * * Returns 0 in case of success, -1 in case of failure. */ int @@ -10487,6 +10499,10 @@ virDomainDetachDevice(virDomainPtr domain, const char *xml) * a synchronous removal. In other words, this API may wait a bit for the * removal to complete in case it was not synchronous. * + * Be aware that hotplug changes might not persist across a domain going + * into S4 state (also known as hibernation) unless you also modify the + * persistent domain definition. + * * Returns 0 in case of success, -1 in case of failure. */ int -- 1.9.0

On 04/30/2014 10:05 AM, Michal Privoznik wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=808463
Well, libvirt doesn't distinguish between domain poweroff and hibernation (S4). It's hard to differentiate these two on a real machine anyway. As a result, any device that is hot(un-)plugged is lost (appears again) when domain is started again as from our POV it is a fresh cold boot. Instead of doing anything wise here, we should just document this as known limitation.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/libvirt.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
ACK, safe for freeze. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 30.04.2014 18:11, Eric Blake wrote:
On 04/30/2014 10:05 AM, Michal Privoznik wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=808463
Well, libvirt doesn't distinguish between domain poweroff and hibernation (S4). It's hard to differentiate these two on a real machine anyway. As a result, any device that is hot(un-)plugged is lost (appears again) when domain is started again as from our POV it is a fresh cold boot. Instead of doing anything wise here, we should just document this as known limitation.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/libvirt.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
ACK, safe for freeze.
Thanks, pushed. Michal
participants (2)
-
Eric Blake
-
Michal Privoznik