On Thu, Jul 7, 2022 at 4:40 AM Marc-André Lureau <marcandre.lur...@gmail.com> wrote: > > Hi > > On Thu, Jul 7, 2022 at 8:10 AM John Snow <js...@redhat.com> wrote: >> >> 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 cannot >> 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 <js...@redhat.com> >> --- >> qga/commands-posix.c | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/qga/commands-posix.c b/qga/commands-posix.c >> index 0469dc409d4..950c9d72fe7 100644 >> --- a/qga/commands-posix.c >> +++ b/qga/commands-posix.c >> @@ -1207,7 +1207,12 @@ 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. >> */ >> + fs->name = g_path_get_basename(devpath); >> + } else { >> + error_setg_errno(errp, errno, "realpath(\"%s\")", devpath); >> + } > > > It looks like this function is called recursively with the same "fs" > argument. That's probably why there is a if (!fs->name) check next. You may > want to check it too to avoid leaks and incorrect info.
Oh, I see what you mean. I am not sure if it will come up in practice*, but I see the theoretical concern at least. I can amend it. --js * (Genuinely; I have no idea.)