On Sat, 22 Jan 2022 20:12:16 +0100 Christian Schoenebeck <qemu_...@crudebyte.com> wrote:
> The 9p test cases use mkdtemp() to create a temporary directory for > running the 'local' 9p tests with real files/dirs. Unlike mktemp() > which only generates a unique file name, mkdtemp() also creates the > directory, therefore the subsequent mkdir() was wrong and caused > errors on some systems. > > Signed-off-by: Christian Schoenebeck <qemu_...@crudebyte.com> > Fixes: 136b7af2 (tests/9pfs: fix test dir for parallel tests) > Reported-by: Daniel P. Berrangé <berra...@redhat.com> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/832 > --- Reviewed-by: Greg Kurz <Greg Kurz <gr...@kaod.org> Unrelated, the template pointer is leaked. It looks like g_autofree would help here. I'll post a follow-up to fix that. > tests/qtest/libqos/virtio-9p.c | 18 +++--------------- > 1 file changed, 3 insertions(+), 15 deletions(-) > > diff --git a/tests/qtest/libqos/virtio-9p.c b/tests/qtest/libqos/virtio-9p.c > index b4e1143288..ef96ef006a 100644 > --- a/tests/qtest/libqos/virtio-9p.c > +++ b/tests/qtest/libqos/virtio-9p.c > @@ -37,31 +37,19 @@ static char *concat_path(const char* a, const char* b) > return g_build_filename(a, b, NULL); > } > > -static void init_local_test_path(void) > +void virtio_9p_create_local_test_dir(void) > { > + struct stat st; > char *pwd = g_get_current_dir(); > char *template = concat_path(pwd, "qtest-9p-local-XXXXXX"); > + > local_test_path = mkdtemp(template); > if (!local_test_path) { > g_test_message("mkdtemp('%s') failed: %s", template, > strerror(errno)); > } > - g_assert(local_test_path); > g_free(pwd); > -} > - > -void virtio_9p_create_local_test_dir(void) > -{ > - struct stat st; > - int res; > - > - init_local_test_path(); > > g_assert(local_test_path != NULL); > - res = mkdir(local_test_path, 0777); > - if (res < 0) { > - g_test_message("mkdir('%s') failed: %s", local_test_path, > - strerror(errno)); > - } > > /* ensure test directory exists now ... */ > g_assert(stat(local_test_path, &st) == 0);