On Mon, Dec 16, 2024 at 7:12 PM Peter Xu <pet...@redhat.com> wrote:

> On Mon, Dec 16, 2024 at 04:56:33PM +0000, Peter Maydell wrote:
> > On Mon, 16 Dec 2024 at 16:14, Peter Xu <pet...@redhat.com> wrote:
> > >
> > > QEMU uses g_mkdir_with_parents() a lot, especially in the case where
> the
> > > failure case is ignored so an abort is expected when happened.
> > >
> > > Provide a helper qemu_mkdir_with_parents() to do that, and use it in
> the
> > > two cases in qga/.  To be used in more places later.
> > >
> > > Signed-off-by: Peter Xu <pet...@redhat.com>
> > > ---
> > >  include/qemu/osdep.h     | 7 +++++++
> > >  qga/commands-posix-ssh.c | 8 ++------
> > >  util/osdep.c             | 6 ++++++
> > >  3 files changed, 15 insertions(+), 6 deletions(-)
> > >
> > > diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
> > > index fdff07fd99..dc67fb2e5e 100644
> > > --- a/include/qemu/osdep.h
> > > +++ b/include/qemu/osdep.h
> > > @@ -828,6 +828,13 @@ static inline int
> platform_does_not_support_system(const char *command)
> > >  }
> > >  #endif /* !HAVE_SYSTEM_FUNCTION */
> > >
> > > +/**
> > > + * qemu_mkdir_with_parents:
> > > + *
> > > + * Create directories with parents.  Abort on failures.
> > > + */
> > > +void qemu_mkdir_with_parents(const char *dir, int mode);
> >
> > Don't put new function prototypes into osdep.h, please.
> > It is included by every single C file in the codebase.
> > There is always somewhere better to put things.
> >
> > QEMU shouldn't abort on things that are kind of expected
> > OS errors like "couldn't create a directory", so I'm
> > a bit dubious about this function.
>
> That's what qga/ is doing right now, rather than a decision made in this
> series, though.
>

I think we need to fix this behavior in QGA and report the real error,
instead of wrapping the `assert` into some function that will make
it not so obvious.


>
> >
> > The two use cases in this commit seem to be test code,
> > so asserting is reasonable. But a "for test code only"
> > function should go in a header file that's only included
> > by test cases and the comment should be clear about that,
> > and it shouldn't have a function name that implies
> > "this is the normal way any code in QEMU might want
> > to create directories".
> >
> > For the qtest tests, I currently ignore Coverity
> > reports in our test code unless it seems particularly
> > worthwhile to fix them. This is especially true for
> > complaints about unchecked return values and the like.
>
> OK.
>
> >
> > Even in a test case it is still not great to call
> > g_assert(), because this makes the test binary crash,
> > rather than reporting an error. The surrounding TAP
> > protocol parsing code then doesn't report the test
> > failure the way you might like.
>
> Hmm, I normally always think crash is better especially in tests to keep
> everything around when an error happens as general rule.
>
> TAP parsing especially on errors is more useful to me when we constantly
> expect failures, IIUC that's not the case for QEMU tests?  Because I do
> expect the CI to pass all the tests always.  But I also admit I don't know
> the whole picture of QEMU tests..
>
> If we don't care about retval checks in tests, we can definitely drop patch
> 1-2 here in all cases.
>
> Thanks,
>
> --
> Peter Xu
>
>

Reply via email to