On Mon, Aug 25, 2025 at 12:04 PM Thomas Huth <th...@redhat.com> wrote:
>
> On 25/08/2025 10.51, Manos Pitsidianakis wrote:
> > On Mon, Aug 25, 2025 at 11:47 AM Thomas Huth <th...@redhat.com> wrote:
> >>
> >> On 25/08/2025 09.30, Manos Pitsidianakis wrote:
> >>> On Thu, Aug 21, 2025 at 12:49 PM Thomas Huth <th...@redhat.com> wrote:
> >>>>
> >>>> From: Thomas Huth <th...@redhat.com>
> >>>>
> >>>> Currently, we have one lock that is held while a test is looking for
> >>>> free ports. However, we are also using different ranges for looking
> >>>> for free ports nowadays (PORTS_START is based on the PID of the process),
> >>>> so instead of using only one lock, we should rather use a lock per
> >>>> range instead. This should help to allow running more tests in parallel.
> >>>>
> >>>> While we're at it, also create the lock files without executable bit
> >>>> (mode is 0o777 by default).
> >>>>
> >>>
> >>> (Unrelated to this patch but the file itself)
> >>>
> >>> Hm. AF_INET supports binding to port 0 to connect to any available
> >>> port (see man 7 ip). Is this not portable?
> >>
> >> No clue ... but in that case, we'd need to go back to only use one lock for
> >> all tests that are running in parallel, so it might cause some more 
> >> contention?
> >
> > IIUC there would be no need for locking, since the kernel would return
> > a free port for each process.
>
> That only works within a process, doesn't it? The problem here is that the
> test itself does not open the port, it just first needs to figure out a free
> port that will be used later.
> The test then launches QEMU with that port number, which will then open this
> port. Then the test connects to that port number (which it must know) to
> interact with QEMU.
> If QEMU is using port 0 for that, the test might not have a way to retrieve
> the final port number from QEMU in all cases.
>
>   Thomas
>

Ah yeah, correct. It depends on what the test wants to do with that port.

Thanks

-- 
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd

Reply via email to