Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:sschapiro:openstack:upstream
libguestfs
0065-virt-filesystems-Ignore-errors-when-gettin...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0065-virt-filesystems-Ignore-errors-when-getting-label-an.patch of Package libguestfs
From 6896a88543114605549ecd4ddbc44cc4649fe1b6 Mon Sep 17 00:00:00 2001 From: Richard W.M. Jones <rjones@redhat.com> Date: Sat, 8 Jan 2011 10:15:39 +0000 Subject: [PATCH 65/72] virt-filesystems: Ignore errors when getting label and UUID (RHBZ#668112). If virt-filesystems was pointed to an image that contained bogus or blank filesystems, then calls to vfs-label and/or vfs-uuid could fail, resulting in errors like this: libguestfs: error: vfs_label: /dev/vda1: These errors can be ignored and shouldn't stop virt-filesystems from working. (cherry picked from commit 97339a0f43d687efac6f7edafdf21e4b8d9b35e8) (cherry picked from commit 03ac08e5230d0e51f94e72ba2849c2ef13ed217b) --- cat/virt-filesystems.c | 35 +++++++++++++++++++++++++++++------ 1 files changed, 29 insertions(+), 6 deletions(-) diff --git a/cat/virt-filesystems.c b/cat/virt-filesystems.c index 987882d..cd991e8 100644 --- a/cat/virt-filesystems.c +++ b/cat/virt-filesystems.c @@ -33,6 +33,15 @@ #include "guestfs.h" #include "options.h" +#define DISABLE_GUESTFS_ERRORS_FOR(stmt) do { \ + guestfs_error_handler_cb old_error_cb; \ + void *old_error_data; \ + old_error_cb = guestfs_get_error_handler (g, &old_error_data); \ + guestfs_set_error_handler (g, NULL, NULL); \ + stmt; \ + guestfs_set_error_handler (g, old_error_cb, old_error_data); \ + } while (0) + /* These globals are shared with options.c. */ guestfs_h *g; @@ -438,14 +447,28 @@ do_output_filesystems (void) * otherwise pass them as NULL. */ if ((columns & COLUMN_VFS_LABEL)) { - vfs_label = guestfs_vfs_label (g, fses[i]); - if (vfs_label == NULL) - exit (EXIT_FAILURE); + DISABLE_GUESTFS_ERRORS_FOR ( + vfs_label = guestfs_vfs_label (g, fses[i]); + ); + if (vfs_label == NULL) { + vfs_label = strdup (""); + if (!vfs_label) { + perror ("strdup"); + exit (EXIT_FAILURE); + } + } } if ((columns & COLUMN_UUID)) { - vfs_uuid = guestfs_vfs_uuid (g, fses[i]); - if (vfs_uuid == NULL) - exit (EXIT_FAILURE); + DISABLE_GUESTFS_ERRORS_FOR ( + vfs_uuid = guestfs_vfs_uuid (g, fses[i]); + ); + if (vfs_uuid == NULL) { + vfs_uuid = strdup (""); + if (!vfs_uuid) { + perror ("strdup"); + exit (EXIT_FAILURE); + } + } } if ((columns & COLUMN_SIZE)) { size = guestfs_blockdev_getsize64 (g, fses[i]); -- 1.7.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor