On 05/30/2012 08:34 AM, Jiri Denemark wrote:
---
src/util/virfile.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/util/virfile.c b/src/util/virfile.c
index db3d737..bc7f2c9 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -35,6 +35,7 @@
#include "configmake.h"
#include "memory.h"
#include "virterror_internal.h"
+#include "logging.h"
#define VIR_FROM_THIS VIR_FROM_NONE
#define virFileError(code, ...) \
@@ -51,6 +52,15 @@ int virFileClose(int *fdptr, bool preserve_errno)
if (preserve_errno)
saved_errno = errno;
rc = close(*fdptr);
+ if (rc < 0) {
+ if (errno != EBADF) {
+ char ebuf[1024] ATTRIBUTE_UNUSED;
+ VIR_DEBUG("Failed to close fd %d: %d",
+ *fdptr, virStrerror(errno, ebuf, sizeof(ebuf)));
I think we _also_ need to log EBADF errors, those are usually the sign
of developer bugs, as you are probably guilty of a double-close race.
In fact, I think EBADF should be logged with higher severity than
VIR_DEBUG, as we want to see that right away.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org