From 4eaf7009f1346e11a7d8903025d07ecee84ccf36 Mon Sep 17 00:00:00 2001
From: "Daniel P. Berrange" <berrange@redhat.com>
Date: Tue, 6 Aug 2013 14:23:55 +0100
Subject: [PATCH] Fix error handling for virNodeDeviceGetParent()
https://bugzilla.redhat.com/show_bug.cgi?id=994141
It is valid for virNodeDeviceGetParent() to return NULL in the
case where there is no parent device present.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
(cherry picked from commit 43666d996feed10d72a1eb03415901d7b3d5332a)
---
Virt.xs | 6 ++++--
examples/node-devlist.pl | 11 +++++++++++
2 files changed, 15 insertions(+), 2 deletions(-)
create mode 100644 examples/node-devlist.pl
diff --git a/Virt.xs b/Virt.xs
index aa4a795..f8ebce7 100644
--- a/Virt.xs
+++ b/Virt.xs
@@ -5390,8 +5390,10 @@ const char *
get_parent(dev)
virNodeDevicePtr dev;
CODE:
- if (!(RETVAL = virNodeDeviceGetParent(dev)))
- _croak_error();
+ if (!(RETVAL = virNodeDeviceGetParent(dev))) {
+ if (virGetLastError() != NULL)
+ _croak_error();
+ }
OUTPUT:
RETVAL
diff --git a/examples/node-devlist.pl b/examples/node-devlist.pl
new file mode 100644
index 0000000..59f6a82
--- /dev/null
+++ b/examples/node-devlist.pl
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+
+use Sys::Virt;
+
+my $conn = Sys::Virt->new();
+
+my @nodelist = $conn->list_all_node_devices();
+foreach my $dev (@nodelist){
+ my $parent = $dev->get_parent();
+ printf "%s: < %s\n", $dev->get_name(), $parent;
+}