From: "Daniel P. Berrangé" <berrange@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: "Marc-André Lureau" <marcandre.lureau@gmail.com>,
QEMU <qemu-devel@nongnu.org>, "Beraldo Leal" <bleal@redhat.com>,
"open list:Block layer core" <qemu-block@nongnu.org>,
"Hanna Reitz" <hreitz@redhat.com>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Kevin Wolf" <kwolf@redhat.com>,
"Michael Roth" <michael.roth@amd.com>,
"Thomas Huth" <thuth@redhat.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>
Subject: Re: [PATCH v2 03/10] qga: treat get-guest-fsinfo as "best effort"
Date: Fri, 17 Jun 2022 15:29:22 +0100 [thread overview]
Message-ID: <YqyPwtUestnsoiq8@redhat.com> (raw)
In-Reply-To: <CAFn=p-ZcR3SoS9zKHHLfX8=T-1FszAFesD-V9N6_qz_oLmsyUQ@mail.gmail.com>
On Fri, Jun 17, 2022 at 10:04:14AM -0400, John Snow wrote:
> On Fri, Jun 17, 2022, 5:49 AM Daniel P. Berrangé <berrange@redhat.com>
> wrote:
>
> > On Thu, Jun 16, 2022 at 06:35:44PM +0400, Marc-André Lureau wrote:
> > > Hi
> > >
> > > On Thu, Jun 16, 2022 at 6:27 PM John Snow <jsnow@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 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 = y
> > > >
> > >
> > > Hmm, maybe we should make the field optional instead.
> >
> > In my own testing, this method is called in various scenarios.
> > Some example:
> >
> > devpath==/sys/dev/block/253:0
> > syspath==/sys/devices/virtual/block/dm-0
> >
> > => fs->name == dm-0
> >
> > devpath==/sys/devices/virtual/block/dm-0/slaves/nvme0n1p4
> >
> > syspath==/sys/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1/nvme0n1p4
> >
> > => fs->name == nvme0n1p4
> >
> > devpath==/sys/dev/block/259:2
> >
> > syspath==/sys/devices/pci0000:00/0000:00:1d.0/0000:02:00.0/nvme/nvme0/nvme0n1/nvme0n1p2
> >
> > => fs->name == nvme0n1p2
> >
> > We set fs->name from basename(syspath)
> >
> > If the realpath call fails, we could use basename(devpath). That
> > would sometimes give the correct answer, and in other types it
> > would at least give the major:minor number, which an admin can
> > manually correlate if desired via /proc/partitions.
> >
> > If we want to be really advanced, we could just open /proc/partitions
> > and resolve the proper name ourselves, but that's probably overkill
> >
> > basename(sysfspath)
> >
> > is better than g_strdup("??\?-ENOENT") IMHO
> >
>
> Sure! I had something like that initially, but chickened out specifically
> because I thought major:minor was a nonsense kind of reply, so I opted for
> more egregiously obvious nonsense. I figured I'd find strong opinions that
> way ;)
It is a different format but it is semantically giving similar info.
If we want to just leave it empty though that's fine too.
>
> I'm just not sure how this data is used in practice so I had no insight as
> to what would be best. I can use the basename, sure.
>
> (Should I also add an optional flag field that indicates the path was not
> resolvable, do you think? I guess we can always add it later if needed, but
> not sure if i need to head that one off at the pass.)
>
> As for Thomas' comment: I wasn't entirely clear on precisely when we'd run
> into this scenario and I didn't know if it was a good idea to skip the
> entries entirely. Maybe getting platform mount information even if we can't
> access it is still important when working with containers? I don't know one
> way or the other TBQH. I'm not very well traveled with devices,
> filesystems, and permissions where containers are concerned.
I view the primary purpose of this command to be offering a way to
enumerate filesystems. Whether we report what block device the FS
on host is a secondary purpose. So as long as we can fullfill the
primary purpose, its sufficient IMHO.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2022-06-17 14:31 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-16 14:26 [PATCH v2 00/10] Improve reliability of VM tests John Snow
2022-06-16 14:26 ` [PATCH v2 01/10] tests/qemu-iotests: hotfix for 307, 223 output John Snow
2022-07-01 8:03 ` Hanna Reitz
2022-06-16 14:26 ` [PATCH v2 02/10] tests/qemu-iotests: skip 108 when FUSE is not loaded John Snow
2022-06-17 9:20 ` Thomas Huth
2022-07-01 8:05 ` Hanna Reitz
2022-07-01 16:15 ` John Snow
2022-07-04 15:36 ` Hanna Reitz
2022-06-16 14:26 ` [PATCH v2 03/10] qga: treat get-guest-fsinfo as "best effort" John Snow
2022-06-16 14:35 ` Marc-André Lureau
2022-06-16 14:43 ` John Snow
2022-06-17 9:17 ` Thomas Huth
2022-06-17 9:49 ` Daniel P. Berrangé
2022-06-17 14:04 ` John Snow
2022-06-17 14:29 ` Daniel P. Berrangé [this message]
2022-06-16 14:26 ` [PATCH v2 04/10] tests/vm: use 'cp' instead of 'ln' for temporary vm images John Snow
2022-06-16 14:26 ` [PATCH v2 05/10] tests/vm: switch CentOS 8 to CentOS 8 Stream John Snow
2022-06-16 14:26 ` [PATCH v2 06/10] tests/vm: switch centos.aarch64 " John Snow
2022-06-16 14:26 ` [PATCH v2 07/10] tests/vm: update sha256sum for ubuntu.aarch64 John Snow
2022-06-16 14:26 ` [PATCH v2 08/10] tests/vm: remove ubuntu.i386 VM test John Snow
2022-06-17 9:24 ` Thomas Huth
2022-06-16 14:26 ` [PATCH v2 09/10] tests/vm: remove duplicate 'centos' " John Snow
2022-06-17 9:30 ` Thomas Huth
2022-06-16 14:26 ` [PATCH v2 10/10] tests/vm: add 512MB extra memory per core John Snow
2022-06-17 16:05 ` [PATCH v2 00/10] Improve reliability of VM tests John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YqyPwtUestnsoiq8@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=bleal@redhat.com \
--cc=f4bug@amsat.org \
--cc=hreitz@redhat.com \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=marcandre.lureau@gmail.com \
--cc=michael.roth@amd.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
--cc=wainersm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.