In some container environments, there may be references to block devices
witnessable from a container through /proc/self/mountinfo that reference
devices we simply don't have access to in the container, and could not
provide information about.
Instead of failing the entire fsinfo command, return stub information
for these failed lookups.
This allows test-qga to pass under docker tests, which are in turn used
by the CentOS VM tests.
Signed-off-by: John Snow <jsnow@redhat.com>
---
qga/commands-posix.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 0469dc409d4..5989d4dca9d 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -1207,7 +1207,13 @@ static void build_guest_fsinfo_for_device(char const *devpath,
syspath = realpath(devpath, NULL);
if (!syspath) {
- error_setg_errno(errp, errno, "realpath(\"%s\")", devpath);
+ if (errno == ENOENT) {
+ /* This devpath may not exist because of container config, etc. */
+ fprintf(stderr, "realpath(%s) returned NULL/ENOENT\n", devpath);
qga uses g_critical() (except for some win32 code paths atm)
+ fs->name = g_strdup("??\?-ENOENT");
Hmm, maybe we should make the field optional instead.
+ } else {
+ error_setg_errno(errp, errno, "realpath(\"%s\")", devpath);
+ }
return;
}
--
2.34.3