Message ID | f6602123c6f7d0d593466231b04fba087817abbd.1642879848.git.qemu_oss@crudebyte.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tests/9pfs: fix mkdir() being called twice | expand |
On Samstag, 22. Januar 2022 20:12:16 CET Christian Schoenebeck 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_oss@crudebyte.com> > Fixes: 136b7af2 (tests/9pfs: fix test dir for parallel tests) > Reported-by: Daniel P. Berrangé <berrange@redhat.com> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/832 > --- > 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(); > Somebody being picky might argue that the cleanup changes above might be split as separate patch ... > 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)); > - } ... from the actual fix being this. If somebody cares, I'll send a v2. > > /* ensure test directory exists now ... */ > g_assert(stat(local_test_path, &st) == 0); Best regards, Christian Schoenebeck
On Sat, Jan 22, 2022 at 08:12:16PM +0100, Christian Schoenebeck 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_oss@crudebyte.com> > Fixes: 136b7af2 (tests/9pfs: fix test dir for parallel tests) > Reported-by: Daniel P. Berrangé <berrange@redhat.com> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/832 > --- > tests/qtest/libqos/virtio-9p.c | 18 +++--------------- > 1 file changed, 3 insertions(+), 15 deletions(-) Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Regards, Daniel
On Sat, 22 Jan 2022 20:12:16 +0100 Christian Schoenebeck <qemu_oss@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_oss@crudebyte.com> > Fixes: 136b7af2 (tests/9pfs: fix test dir for parallel tests) > Reported-by: Daniel P. Berrangé <berrange@redhat.com> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/832 > --- Reviewed-by: Greg Kurz <Greg Kurz <groug@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);
On Dienstag, 25. Januar 2022 16:33:46 CET Greg Kurz wrote: > On Sat, 22 Jan 2022 20:12:16 +0100 > > Christian Schoenebeck <qemu_oss@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_oss@crudebyte.com> > > Fixes: 136b7af2 (tests/9pfs: fix test dir for parallel tests) > > Reported-by: Daniel P. Berrangé <berrange@redhat.com> > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/832 > > --- > > Reviewed-by: Greg Kurz <Greg Kurz <groug@kaod.org> Hey, a live sign. :) > Unrelated, the template pointer is leaked. It looks like g_autofree would > help here. I'll post a follow-up to fix that. This man knows what I like to read! Best regards, Christian Schoenebeck
On Tue, 25 Jan 2022 18:51:54 +0100 Christian Schoenebeck <qemu_oss@crudebyte.com> wrote: > On Dienstag, 25. Januar 2022 16:33:46 CET Greg Kurz wrote: > > On Sat, 22 Jan 2022 20:12:16 +0100 > > > > Christian Schoenebeck <qemu_oss@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_oss@crudebyte.com> > > > Fixes: 136b7af2 (tests/9pfs: fix test dir for parallel tests) > > > Reported-by: Daniel P. Berrangé <berrange@redhat.com> > > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/832 > > > --- > > > > Reviewed-by: Greg Kurz <Greg Kurz <groug@kaod.org> > > Hey, a live sign. :) > Yeah... My current engagement with kata containers doesn't leave me much time to do anything else and I just had covid ;-) > > Unrelated, the template pointer is leaked. It looks like g_autofree would > > help here. I'll post a follow-up to fix that. > > This man knows what I like to read! > Heh :-) > Best regards, > Christian Schoenebeck > >
On Samstag, 22. Januar 2022 20:12:16 CET Christian Schoenebeck 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_oss@crudebyte.com> > Fixes: 136b7af2 (tests/9pfs: fix test dir for parallel tests) > Reported-by: Daniel P. Berrangé <berrange@redhat.com> > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/832 > --- > tests/qtest/libqos/virtio-9p.c | 18 +++--------------- > 1 file changed, 3 insertions(+), 15 deletions(-) Queued on 9p.next: https://github.com/cschoenebeck/qemu/commits/9p.next Thanks! Best regards, Christian Schoenebeck
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);
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_oss@crudebyte.com> Fixes: 136b7af2 (tests/9pfs: fix test dir for parallel tests) Reported-by: Daniel P. Berrangé <berrange@redhat.com> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/832 --- tests/qtest/libqos/virtio-9p.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-)