From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@gmail.com>
Cc: Bin Meng <bmeng.cn@gmail.com>,
qemu-devel@nongnu.org, Bin Meng <bin.meng@windriver.com>,
Hanna Reitz <hreitz@redhat.com>, Kevin Wolf <kwolf@redhat.com>,
qemu-block@nongnu.org
Subject: Re: [PATCH 03/51] block: Unify the get_tmp_filename() implementation
Date: Wed, 31 Aug 2022 14:19:45 +0100 [thread overview]
Message-ID: <Yw9f8bjPrfg5OI6r@redhat.com> (raw)
In-Reply-To: <CAJ+F1CJAb-jz8=4hwDhpUQbbtXj_SoW44TwOmuH8MQWagbrD5Q@mail.gmail.com>
On Wed, Aug 31, 2022 at 04:54:41PM +0400, Marc-André Lureau wrote:
> Hi Bin
>
> On Wed, Aug 24, 2022 at 1:42 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> > From: Bin Meng <bin.meng@windriver.com>
> >
> > At present get_tmp_filename() has platform specific implementations
> > to get the directory to use for temporary files. Switch over to use
> > g_get_tmp_dir() which works on all supported platforms.
> >
> >
> It "works" quite differently though. Is this patch really necessary here?
>
> If yes, please explain why.
>
> If not, I suggest you drop optional / rfc / "nice to have" patches from the
> series. It will help to get it merged faster.
>
> thanks
>
>
>
> > Signed-off-by: Bin Meng <bin.meng@windriver.com>
> > ---
> >
> > block.c | 16 ++--------------
> > 1 file changed, 2 insertions(+), 14 deletions(-)
> >
> > diff --git a/block.c b/block.c
> > index bc85f46eed..d06df47f72 100644
> > --- a/block.c
> > +++ b/block.c
> > @@ -864,21 +864,10 @@ int bdrv_probe_geometry(BlockDriverState *bs,
> > HDGeometry *geo)
> > */
> > int get_tmp_filename(char *filename, int size)
> > {
> > -#ifdef _WIN32
> > - char temp_dir[MAX_PATH];
> > - /* GetTempFileName requires that its output buffer (4th param)
> > - have length MAX_PATH or greater. */
> > - assert(size >= MAX_PATH);
> > - return (GetTempPath(MAX_PATH, temp_dir)
> > - && GetTempFileName(temp_dir, "qem", 0, filename)
> > - ? 0 : -GetLastError());
> > -#else
> > int fd;
> > const char *tmpdir;
> > - tmpdir = getenv("TMPDIR");
> > - if (!tmpdir) {
> > - tmpdir = "/var/tmp";
> > - }
> > + tmpdir = g_get_tmp_dir();
> > +
> > if (snprintf(filename, size, "%s/vl.XXXXXX", tmpdir) >= size) {
> > return -EOVERFLOW;
> > }
I know this is pre-existing, but this use of snprintf is really
undesirable and should be culled while we're touching this code.
There are only two callers of get_tmp_filename and they're
inconsistent too
One does
/* TODO: extra byte is a hack to ensure MAX_PATH space on Windows. */
char *tmp_filename = g_malloc0(PATH_MAX + 1);
...
ret = get_tmp_filename(tmp_filename, PATH_MAX + 1);
while the other does
s->qcow_filename = g_malloc(PATH_MAX);
ret = get_tmp_filename(s->qcow_filename, PATH_MAX);
either the comment is wrong and adding "+1" to PATH_MAX is not
required, or the second caller is wrong on Windows. This may even
be totally irrelevant with the switch to g_get_tmp_dir. Whatever
the answer is, at least 1 of the callers needs updating.
It would be way better if the method signature was
char *get_tmp_filename(void);
and we uses g_strdup_printf() instead of snprintf so the corret
size is allocated right away, removing the question about whether
we need PATH_MAX or PATH_MAX + 1 entirely.
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-08-31 13:24 UTC|newest]
Thread overview: 174+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-24 9:39 [PATCH 00/51] tests/qtest: Enable running qtest on Windows Bin Meng
2022-08-24 9:39 ` [PATCH 01/51] tests/qtest: Use g_setenv() Bin Meng
2022-08-24 11:45 ` Thomas Huth
2022-09-04 14:10 ` Philippe Mathieu-Daudé via
2022-08-24 9:39 ` [PATCH 02/51] tests/qtest: Use g_mkdtemp() Bin Meng
2022-08-24 14:42 ` Thomas Huth
2022-08-24 9:39 ` [PATCH 03/51] block: Unify the get_tmp_filename() implementation Bin Meng
2022-08-31 12:54 ` Marc-André Lureau
2022-08-31 13:19 ` Daniel P. Berrangé [this message]
2022-09-01 6:41 ` Bin Meng
2022-08-24 9:39 ` [PATCH 04/51] semihosting/arm-compat-semi: Avoid using hardcoded /tmp Bin Meng
2022-08-31 12:59 ` Marc-André Lureau
2022-09-01 7:11 ` Bin Meng
2022-09-01 9:20 ` Richard Henderson
2022-08-24 9:39 ` [PATCH 05/51] tcg: " Bin Meng
2022-08-31 13:02 ` Marc-André Lureau
2022-08-24 9:39 ` [PATCH 06/51] util/qemu-sockets: Use g_get_tmp_dir() to get the directory for temporary files Bin Meng
2022-08-31 13:05 ` Marc-André Lureau
2022-08-24 9:39 ` [PATCH 07/51] tests: Avoid using hardcoded /tmp in test cases Bin Meng
2022-08-24 17:51 ` Dr. David Alan Gilbert
2022-08-25 8:41 ` Thomas Huth
2022-08-24 9:39 ` [PATCH 08/51] block/vvfat: Unify the mkdir() call Bin Meng
2022-08-31 13:08 ` Marc-André Lureau
2022-08-24 9:39 ` [PATCH 09/51] fsdev/virtfs-proxy-helper: Use g_mkdir_with_parents() Bin Meng
2022-08-26 10:09 ` Christian Schoenebeck
2022-08-26 10:30 ` Bin Meng
2022-08-26 11:16 ` Christian Schoenebeck
2022-08-26 12:38 ` Bin Meng
2022-08-26 13:27 ` Christian Schoenebeck
2022-08-24 9:39 ` [PATCH 10/51] hw/usb: dev-mtp: " Bin Meng
2022-08-31 13:09 ` Marc-André Lureau
2022-08-24 9:39 ` [PATCH 11/51] qga/commands-posix-ssh: " Bin Meng
2022-08-24 14:41 ` Konstantin Kostiuk
2022-08-26 14:46 ` Bin Meng
2022-08-24 9:39 ` [PATCH 12/51] tests: " Bin Meng
2022-08-24 17:58 ` Dr. David Alan Gilbert
2022-08-26 14:49 ` Bin Meng
2022-08-24 9:39 ` [PATCH 13/51] tests/qtest: migration-test: Handle link() for win32 Bin Meng
2022-08-24 18:41 ` Dr. David Alan Gilbert
2022-08-24 9:39 ` [PATCH 14/51] backends/tpm: Exclude headers and macros that don't exist on win32 Bin Meng
2022-08-24 12:35 ` Stefan Berger
2022-08-31 13:20 ` Marc-André Lureau
2022-08-24 9:39 ` [PATCH 15/51] tests/qtest: Adapt {m48t59,rtc}-test cases for win32 Bin Meng
2022-08-25 8:20 ` Thomas Huth
2022-08-24 9:39 ` [PATCH 16/51] tests/qtest: Build e1000e-test for posix only Bin Meng
2022-08-25 10:59 ` Thomas Huth
2022-08-24 9:39 ` [PATCH 17/51] tests/qtest: Build virtio-net-test " Bin Meng
2022-08-25 11:27 ` Thomas Huth
2022-08-31 13:25 ` Marc-André Lureau
2022-08-24 9:39 ` [PATCH 18/51] tests/qtest: Build cases that use memory-backend-file " Bin Meng
2022-08-25 12:39 ` Thomas Huth
2022-08-24 9:39 ` [PATCH 19/51] tests/qtest: Build test-filter-{mirror, redirector} cases " Bin Meng
2022-08-25 11:37 ` Thomas Huth
2022-08-31 13:27 ` Marc-André Lureau
2022-08-24 9:39 ` [PATCH 20/51] tests/qtest: i440fx-test: Skip running request_{bios, pflash} for win32 Bin Meng
2022-08-25 11:40 ` [PATCH 20/51] tests/qtest: i440fx-test: Skip running request_{bios,pflash} " Thomas Huth
2022-08-31 13:40 ` [PATCH 20/51] tests/qtest: i440fx-test: Skip running request_{bios, pflash} " Marc-André Lureau
2022-09-02 8:29 ` Bin Meng
2022-08-24 9:39 ` [PATCH 21/51] tests/qtest: migration-test: Skip running test_migrate_fd_proto on win32 Bin Meng
2022-08-24 18:49 ` Dr. David Alan Gilbert
2022-09-04 14:15 ` Philippe Mathieu-Daudé via
2022-08-24 9:40 ` [PATCH 22/51] tests/qtest: qmp-test: Skip running test_qmp_oob for win32 Bin Meng
2022-08-25 11:45 ` Thomas Huth
2022-08-29 13:14 ` Markus Armbruster
2022-08-29 14:23 ` Bin Meng
2022-08-29 15:06 ` Markus Armbruster
2022-09-04 14:07 ` Philippe Mathieu-Daudé via
2022-08-24 9:40 ` [PATCH 23/51] accel/qtest: Support qtest accelerator for Windows Bin Meng
2022-08-31 13:49 ` Marc-André Lureau
2022-09-02 8:28 ` Bin Meng
2022-08-24 9:40 ` [PATCH 24/51] tests/qtest: libqos: Drop inclusion of <sys/wait.h> Bin Meng
2022-08-25 11:55 ` Thomas Huth
2022-08-31 13:50 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 25/51] tests/qtest: libqos: Rename malloc.h to libqos-malloc.h Bin Meng
2022-08-25 11:51 ` Thomas Huth
2022-08-31 13:51 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 26/51] tests/qtest: libqtest: Move global_qtest definition back to libqtest.c Bin Meng
2022-08-25 11:59 ` Thomas Huth
2022-08-24 9:40 ` [PATCH 27/51] tests/qtest: Use send/recv for socket communication Bin Meng
2022-08-25 13:04 ` Thomas Huth
2022-08-26 14:59 ` Bin Meng
2022-08-26 18:26 ` Thomas Huth
2022-08-31 14:05 ` Marc-André Lureau
2022-08-31 14:19 ` Daniel P. Berrangé
2022-09-02 14:24 ` Bin Meng
2022-08-24 9:40 ` [PATCH 28/51] tests/qtest: libqtest: Exclude the *_fds APIs for win32 Bin Meng
2022-08-31 14:10 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 29/51] tests/qtest: libqtest: Install signal handler via signal() Bin Meng
2022-08-31 14:16 ` Marc-André Lureau
2022-09-02 15:49 ` Bin Meng
2022-08-24 9:40 ` [PATCH 30/51] tests: Skip iotests and qtest when '--without-default-devices' Bin Meng
2022-08-25 12:03 ` Thomas Huth
2022-09-02 15:18 ` Bin Meng
2022-08-24 9:40 ` [PATCH 31/51] tests/qtest: Support libqtest to build and run on Windows Bin Meng
2022-08-31 16:28 ` Marc-André Lureau
2022-09-19 10:00 ` Bin Meng
2022-09-01 11:38 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 32/51] tests/qtest: Fix ERROR_SHARING_VIOLATION for win32 Bin Meng
2022-08-25 12:06 ` Thomas Huth
2022-09-02 10:59 ` Bin Meng
2022-09-01 8:42 ` Marc-André Lureau
2022-09-02 11:02 ` Bin Meng
2022-08-24 9:40 ` [PATCH 33/51] tests/qtest: {ahci, ide}-test: Use relative path for temporary files Bin Meng
2022-09-01 8:58 ` Marc-André Lureau
2022-09-03 13:30 ` Bin Meng
2022-08-24 9:40 ` [PATCH 34/51] tests/qtest: bios-tables-test: Adapt the case for win32 Bin Meng
2022-08-24 12:42 ` Ani Sinha
2022-08-26 10:38 ` Bin Meng
2022-09-01 9:05 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 35/51] tests/qtest: device-plug-test: Reverse the usage of double/single quotes Bin Meng
2022-08-25 12:20 ` Thomas Huth
2022-08-24 9:40 ` [PATCH 36/51] tests/qtest: machine-none-test: Use double quotes to pass the cpu option Bin Meng
2022-08-25 12:22 ` Thomas Huth
2022-08-24 9:40 ` [PATCH 37/51] tests/qtest: migration-test: Disable IO redirection for win32 Bin Meng
2022-08-24 18:53 ` Dr. David Alan Gilbert
2022-08-26 10:48 ` Bin Meng
2022-08-24 9:40 ` [PATCH 38/51] tests/qtest: {ahci,ide}-test: Open file in binary mode Bin Meng
2022-08-25 12:28 ` Thomas Huth
2022-09-01 9:08 ` [PATCH 38/51] tests/qtest: {ahci, ide}-test: " Marc-André Lureau
2022-08-24 9:40 ` [PATCH 39/51] tests/qtest: virtio-net-failover: Disable migration tests for win32 Bin Meng
2022-08-24 9:40 ` [PATCH 40/51] chardev/char-file: Add FILE_SHARE_WRITE when openning the file " Bin Meng
2022-08-25 7:58 ` Marc-André Lureau
2022-08-26 13:15 ` Bin Meng
2022-08-26 13:23 ` Marc-André Lureau
2022-08-27 23:19 ` Bin Meng
2022-08-30 12:30 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 41/51] tests/qtest: migration-test: Kill "to" after migration is canceled Bin Meng
2022-08-24 18:56 ` Dr. David Alan Gilbert
2022-09-01 11:35 ` Marc-André Lureau
2022-09-02 16:33 ` Bin Meng
2022-08-24 9:40 ` [PATCH 42/51] hw/ppc: spapr: Use qemu_vfree() to free spapr->htab Bin Meng
2022-08-24 17:32 ` Daniel Henrique Barboza
2022-09-01 11:40 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 43/51] tests/qtest: npcm7xx_emc-test: Skip running test_{tx, rx} on win32 Bin Meng
2022-08-25 12:32 ` [PATCH 43/51] tests/qtest: npcm7xx_emc-test: Skip running test_{tx,rx} " Thomas Huth
2022-08-25 16:40 ` [PATCH 43/51] tests/qtest: npcm7xx_emc-test: Skip running test_{tx, rx} " Hao Wu
2022-08-24 9:40 ` [PATCH 44/51] tests/qtest: microbit-test: Fix socket access for win32 Bin Meng
2022-09-01 11:44 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 45/51] tests/qtest: prom-env-test: Use double quotes to pass the prom-env option Bin Meng
2022-08-25 12:33 ` Thomas Huth
2022-08-24 9:40 ` [PATCH 46/51] tests/qtest: libqtest: Replace the call to close a socket with closesocket() Bin Meng
2022-09-01 11:46 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 47/51] tests/qtest: libqtest: Correct the timeout unit of blocking receive calls for win32 Bin Meng
2022-09-01 11:57 ` Marc-André Lureau
2022-08-24 9:40 ` [PATCH 48/51] io/channel-watch: Drop a superfluous '#ifdef WIN32' Bin Meng
2022-09-01 12:24 ` Marc-André Lureau
2022-10-17 12:34 ` Daniel P. Berrangé
2022-08-24 9:40 ` [PATCH 49/51] io/channel-watch: Fix socket watch on Windows Bin Meng
2022-09-01 12:58 ` Marc-André Lureau
2022-09-04 6:24 ` Bin Meng
2022-09-05 6:04 ` Marc-André Lureau
2022-09-05 6:13 ` Bin Meng
2022-09-05 8:10 ` Clément Chigot
2022-09-06 7:00 ` Bin Meng
2022-09-06 7:41 ` Clément Chigot
2022-09-06 8:14 ` Bin Meng
2022-09-06 12:06 ` Clément Chigot
2022-09-07 5:07 ` Bin Meng
2022-09-14 8:08 ` Bin Meng
2022-09-21 1:02 ` Bin Meng
2022-09-28 6:10 ` Bin Meng
2022-10-06 3:03 ` Bin Meng
2022-10-11 10:42 ` Bin Meng
2022-10-17 12:21 ` Bin Meng
2022-10-17 12:30 ` Daniel P. Berrangé
2022-10-17 13:03 ` Bin Meng
2022-10-17 13:29 ` Daniel P. Berrangé
2022-10-17 12:35 ` Daniel P. Berrangé
2022-08-24 9:40 ` [PATCH 50/51] .gitlab-ci.d/windows.yml: Increase the timeout to the runner limit Bin Meng
2022-08-25 8:18 ` Thomas Huth
2022-08-26 11:25 ` Bin Meng
2022-08-26 11:33 ` Daniel P. Berrangé
2022-08-24 9:40 ` [PATCH 51/51] docs/devel: testing: Document writing portable test cases Bin Meng
2022-09-01 13:02 ` Marc-André Lureau
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=Yw9f8bjPrfg5OI6r@redhat.com \
--to=berrange@redhat.com \
--cc=bin.meng@windriver.com \
--cc=bmeng.cn@gmail.com \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=marcandre.lureau@gmail.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/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.