* [PATCH v2] ide: Increment BB in-flight counter for TRIM BH
@ 2022-01-20 14:22 Hanna Reitz
2022-01-21 18:47 ` John Snow
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Hanna Reitz @ 2022-01-20 14:22 UTC (permalink / raw)
To: qemu-block
Cc: Paolo Bonzini, Hanna Reitz, John Snow, qemu-devel,
Philippe Mathieu-Daudé
When we still have an AIOCB registered for DMA operations, we try to
settle the respective operation by draining the BlockBackend associated
with the IDE device.
However, this assumes that every DMA operation is associated with an
increment of the BlockBackend’s in-flight counter (e.g. through some
ongoing I/O operation), so that draining the BB until its in-flight
counter reaches 0 will settle all DMA operations. That is not the case:
For TRIM, the guest can issue a zero-length operation that will not
result in any I/O operation forwarded to the BlockBackend, and also not
increment the in-flight counter in any other way. In such a case,
blk_drain() will be a no-op if no other operations are in flight.
It is clear that if blk_drain() is a no-op, the value of
s->bus->dma->aiocb will not change between checking it in the `if`
condition and asserting that it is NULL after blk_drain().
The particular problem is that ide_issue_trim() creates a BH
(ide_trim_bh_cb()) to settle the TRIM request: iocb->common.cb() is
ide_dma_cb(), which will either create a new request, or find the
transfer to be done and call ide_set_inactive(), which clears
s->bus->dma->aiocb. Therefore, the blk_drain() must wait for
ide_trim_bh_cb() to run, which currently it will not always do.
To fix this issue, we increment the BlockBackend's in-flight counter
when the TRIM operation begins (in ide_issue_trim(), when the
ide_trim_bh_cb() BH is created) and decrement it when ide_trim_bh_cb()
is done.
Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2029980
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
---
v1:
https://lists.nongnu.org/archive/html/qemu-block/2022-01/msg00024.html
v2:
- Increment BB’s in-flight counter while the BH is active so that
blk_drain() will poll until the BH is done, as suggested by Paolo
(No git-backport-diff, because this patch was basically completely
rewritten, so it wouldn’t be worth it.)
---
hw/ide/core.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/hw/ide/core.c b/hw/ide/core.c
index e28f8aad61..15138225be 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -433,12 +433,16 @@ static const AIOCBInfo trim_aiocb_info = {
static void ide_trim_bh_cb(void *opaque)
{
TrimAIOCB *iocb = opaque;
+ BlockBackend *blk = iocb->s->blk;
iocb->common.cb(iocb->common.opaque, iocb->ret);
qemu_bh_delete(iocb->bh);
iocb->bh = NULL;
qemu_aio_unref(iocb);
+
+ /* Paired with an increment in ide_issue_trim() */
+ blk_dec_in_flight(blk);
}
static void ide_issue_trim_cb(void *opaque, int ret)
@@ -508,6 +512,9 @@ BlockAIOCB *ide_issue_trim(
IDEState *s = opaque;
TrimAIOCB *iocb;
+ /* Paired with a decrement in ide_trim_bh_cb() */
+ blk_inc_in_flight(s->blk);
+
iocb = blk_aio_get(&trim_aiocb_info, s->blk, cb, cb_opaque);
iocb->s = s;
iocb->bh = qemu_bh_new(ide_trim_bh_cb, iocb);
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ide: Increment BB in-flight counter for TRIM BH
2022-01-20 14:22 [PATCH v2] ide: Increment BB in-flight counter for TRIM BH Hanna Reitz
@ 2022-01-21 18:47 ` John Snow
2022-01-24 9:06 ` Hanna Reitz
2022-01-24 9:55 ` Paolo Bonzini
2022-02-15 17:13 ` Hanna Reitz
2 siblings, 1 reply; 8+ messages in thread
From: John Snow @ 2022-01-21 18:47 UTC (permalink / raw)
To: Hanna Reitz
Cc: Paolo Bonzini, qemu-devel, Qemu-block,
Philippe Mathieu-Daudé
On Thu, Jan 20, 2022 at 9:23 AM Hanna Reitz <hreitz@redhat.com> wrote:
>
> When we still have an AIOCB registered for DMA operations, we try to
> settle the respective operation by draining the BlockBackend associated
> with the IDE device.
>
> However, this assumes that every DMA operation is associated with an
> increment of the BlockBackend’s in-flight counter (e.g. through some
> ongoing I/O operation), so that draining the BB until its in-flight
> counter reaches 0 will settle all DMA operations. That is not the case:
> For TRIM, the guest can issue a zero-length operation that will not
> result in any I/O operation forwarded to the BlockBackend, and also not
> increment the in-flight counter in any other way. In such a case,
> blk_drain() will be a no-op if no other operations are in flight.
>
> It is clear that if blk_drain() is a no-op, the value of
> s->bus->dma->aiocb will not change between checking it in the `if`
> condition and asserting that it is NULL after blk_drain().
>
> The particular problem is that ide_issue_trim() creates a BH
> (ide_trim_bh_cb()) to settle the TRIM request: iocb->common.cb() is
> ide_dma_cb(), which will either create a new request, or find the
> transfer to be done and call ide_set_inactive(), which clears
> s->bus->dma->aiocb. Therefore, the blk_drain() must wait for
> ide_trim_bh_cb() to run, which currently it will not always do.
>
> To fix this issue, we increment the BlockBackend's in-flight counter
> when the TRIM operation begins (in ide_issue_trim(), when the
> ide_trim_bh_cb() BH is created) and decrement it when ide_trim_bh_cb()
> is done.
>
> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2029980
> Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
> ---
> v1:
> https://lists.nongnu.org/archive/html/qemu-block/2022-01/msg00024.html
>
> v2:
> - Increment BB’s in-flight counter while the BH is active so that
> blk_drain() will poll until the BH is done, as suggested by Paolo
>
> (No git-backport-diff, because this patch was basically completely
> rewritten, so it wouldn’t be worth it.)
> ---
> hw/ide/core.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/hw/ide/core.c b/hw/ide/core.c
> index e28f8aad61..15138225be 100644
> --- a/hw/ide/core.c
> +++ b/hw/ide/core.c
> @@ -433,12 +433,16 @@ static const AIOCBInfo trim_aiocb_info = {
> static void ide_trim_bh_cb(void *opaque)
> {
> TrimAIOCB *iocb = opaque;
> + BlockBackend *blk = iocb->s->blk;
>
> iocb->common.cb(iocb->common.opaque, iocb->ret);
>
> qemu_bh_delete(iocb->bh);
> iocb->bh = NULL;
> qemu_aio_unref(iocb);
> +
> + /* Paired with an increment in ide_issue_trim() */
> + blk_dec_in_flight(blk);
> }
>
> static void ide_issue_trim_cb(void *opaque, int ret)
> @@ -508,6 +512,9 @@ BlockAIOCB *ide_issue_trim(
> IDEState *s = opaque;
> TrimAIOCB *iocb;
>
> + /* Paired with a decrement in ide_trim_bh_cb() */
> + blk_inc_in_flight(s->blk);
> +
> iocb = blk_aio_get(&trim_aiocb_info, s->blk, cb, cb_opaque);
> iocb->s = s;
> iocb->bh = qemu_bh_new(ide_trim_bh_cb, iocb);
> --
> 2.34.1
>
Oh, this *wasn't* the same bug I thought it was.
There's no regression test, but I will trust you (and Paolo) that this
solves the bug you were seeing. It makes sense.
Reviewed-by: John Snow <jsnow@redhat.com>
Tested-by: John Snow <jsnow@redhat.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ide: Increment BB in-flight counter for TRIM BH
2022-01-21 18:47 ` John Snow
@ 2022-01-24 9:06 ` Hanna Reitz
2022-01-24 18:41 ` John Snow
0 siblings, 1 reply; 8+ messages in thread
From: Hanna Reitz @ 2022-01-24 9:06 UTC (permalink / raw)
To: John Snow
Cc: Paolo Bonzini, qemu-devel, Qemu-block,
Philippe Mathieu-Daudé
On 21.01.22 19:47, John Snow wrote:
> On Thu, Jan 20, 2022 at 9:23 AM Hanna Reitz <hreitz@redhat.com> wrote:
>> When we still have an AIOCB registered for DMA operations, we try to
>> settle the respective operation by draining the BlockBackend associated
>> with the IDE device.
>>
>> However, this assumes that every DMA operation is associated with an
>> increment of the BlockBackend’s in-flight counter (e.g. through some
>> ongoing I/O operation), so that draining the BB until its in-flight
>> counter reaches 0 will settle all DMA operations. That is not the case:
>> For TRIM, the guest can issue a zero-length operation that will not
>> result in any I/O operation forwarded to the BlockBackend, and also not
>> increment the in-flight counter in any other way. In such a case,
>> blk_drain() will be a no-op if no other operations are in flight.
>>
>> It is clear that if blk_drain() is a no-op, the value of
>> s->bus->dma->aiocb will not change between checking it in the `if`
>> condition and asserting that it is NULL after blk_drain().
>>
>> The particular problem is that ide_issue_trim() creates a BH
>> (ide_trim_bh_cb()) to settle the TRIM request: iocb->common.cb() is
>> ide_dma_cb(), which will either create a new request, or find the
>> transfer to be done and call ide_set_inactive(), which clears
>> s->bus->dma->aiocb. Therefore, the blk_drain() must wait for
>> ide_trim_bh_cb() to run, which currently it will not always do.
>>
>> To fix this issue, we increment the BlockBackend's in-flight counter
>> when the TRIM operation begins (in ide_issue_trim(), when the
>> ide_trim_bh_cb() BH is created) and decrement it when ide_trim_bh_cb()
>> is done.
>>
>> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2029980
>> Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
>> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
>> ---
>> v1:
>> https://lists.nongnu.org/archive/html/qemu-block/2022-01/msg00024.html
>>
>> v2:
>> - Increment BB’s in-flight counter while the BH is active so that
>> blk_drain() will poll until the BH is done, as suggested by Paolo
>>
>> (No git-backport-diff, because this patch was basically completely
>> rewritten, so it wouldn’t be worth it.)
>> ---
>> hw/ide/core.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/hw/ide/core.c b/hw/ide/core.c
>> index e28f8aad61..15138225be 100644
>> --- a/hw/ide/core.c
>> +++ b/hw/ide/core.c
>> @@ -433,12 +433,16 @@ static const AIOCBInfo trim_aiocb_info = {
>> static void ide_trim_bh_cb(void *opaque)
>> {
>> TrimAIOCB *iocb = opaque;
>> + BlockBackend *blk = iocb->s->blk;
>>
>> iocb->common.cb(iocb->common.opaque, iocb->ret);
>>
>> qemu_bh_delete(iocb->bh);
>> iocb->bh = NULL;
>> qemu_aio_unref(iocb);
>> +
>> + /* Paired with an increment in ide_issue_trim() */
>> + blk_dec_in_flight(blk);
>> }
>>
>> static void ide_issue_trim_cb(void *opaque, int ret)
>> @@ -508,6 +512,9 @@ BlockAIOCB *ide_issue_trim(
>> IDEState *s = opaque;
>> TrimAIOCB *iocb;
>>
>> + /* Paired with a decrement in ide_trim_bh_cb() */
>> + blk_inc_in_flight(s->blk);
>> +
>> iocb = blk_aio_get(&trim_aiocb_info, s->blk, cb, cb_opaque);
>> iocb->s = s;
>> iocb->bh = qemu_bh_new(ide_trim_bh_cb, iocb);
>> --
>> 2.34.1
>>
> Oh, this *wasn't* the same bug I thought it was.
>
> There's no regression test, but I will trust you (and Paolo) that this
> solves the bug you were seeing. It makes sense.
There is one in the BZ linked, but I don’t know where we’d put it into
the qemu tree... I’ve explained in v1
(https://lists.nongnu.org/archive/html/qemu-block/2022-01/msg00024.html)
how I didn’t find a way to write a qtest for this, and so resorted to
writing boot sector code to reproduce the assertion failure. Now, we
could put that as a sample image into the iotests, but that’d just be...
wrong. (Is there a place where something like this would belong?)
> Reviewed-by: John Snow <jsnow@redhat.com>
> Tested-by: John Snow <jsnow@redhat.com>
Thanks!
Hanna
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ide: Increment BB in-flight counter for TRIM BH
2022-01-20 14:22 [PATCH v2] ide: Increment BB in-flight counter for TRIM BH Hanna Reitz
2022-01-21 18:47 ` John Snow
@ 2022-01-24 9:55 ` Paolo Bonzini
2022-02-15 17:13 ` Hanna Reitz
2 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2022-01-24 9:55 UTC (permalink / raw)
To: Hanna Reitz, qemu-block
Cc: John Snow, qemu-devel, Philippe Mathieu-Daudé
On 1/20/22 15:22, Hanna Reitz wrote:
>
> Buglink:https://bugzilla.redhat.com/show_bug.cgi?id=2029980
> Suggested-by: Paolo Bonzini<pbonzini@redhat.com>
> Signed-off-by: Hanna Reitz<hreitz@redhat.com>
> ---
> v1:
> https://lists.nongnu.org/archive/html/qemu-block/2022-01/msg00024.html
>
> v2:
> - Increment BB’s in-flight counter while the BH is active so that
> blk_drain() will poll until the BH is done, as suggested by Paolo
>
> (No git-backport-diff, because this patch was basically completely
> rewritten, so it wouldn’t be worth it.)
FWIW you can put a
Supersedes: <20220105111337.10366-1-hreitz@redhat.com>
anywhere in the message, and patchew will gladly produce the crossdiff
link
https://patchew.org/QEMU/20220105111337.10366-1-hreitz@redhat.com/diff/20220120142259.120189-1-hreitz@redhat.com/
for disbelievers---or for those who want to compare the commit messages.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ide: Increment BB in-flight counter for TRIM BH
2022-01-24 9:06 ` Hanna Reitz
@ 2022-01-24 18:41 ` John Snow
0 siblings, 0 replies; 8+ messages in thread
From: John Snow @ 2022-01-24 18:41 UTC (permalink / raw)
To: Hanna Reitz
Cc: Paolo Bonzini, qemu-devel, Qemu-block,
Philippe Mathieu-Daudé
On Mon, Jan 24, 2022 at 4:06 AM Hanna Reitz <hreitz@redhat.com> wrote:
>
> On 21.01.22 19:47, John Snow wrote:
> >
> > There's no regression test, but I will trust you (and Paolo) that this
> > solves the bug you were seeing. It makes sense.
>
> There is one in the BZ linked, but I don’t know where we’d put it into
> the qemu tree... I’ve explained in v1
> (https://lists.nongnu.org/archive/html/qemu-block/2022-01/msg00024.html)
> how I didn’t find a way to write a qtest for this, and so resorted to
> writing boot sector code to reproduce the assertion failure. Now, we
> could put that as a sample image into the iotests, but that’d just be...
> wrong. (Is there a place where something like this would belong?)
>
No idea. I guess it'd be more of an avacado-test level thing, but I'm
not sure I know how to do it quickly. I'm worried there's lots of
little things like this that'd be nice to test against, but "where do
we put this" is a recurring problem.
(Definitely not insisting on this being solved, and also wise enough
to not want to volunteer.)
> > Reviewed-by: John Snow <jsnow@redhat.com>
> > Tested-by: John Snow <jsnow@redhat.com>
>
> Thanks!
>
> Hanna
>
--js
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ide: Increment BB in-flight counter for TRIM BH
2022-01-20 14:22 [PATCH v2] ide: Increment BB in-flight counter for TRIM BH Hanna Reitz
2022-01-21 18:47 ` John Snow
2022-01-24 9:55 ` Paolo Bonzini
@ 2022-02-15 17:13 ` Hanna Reitz
2022-02-17 21:02 ` John Snow
2 siblings, 1 reply; 8+ messages in thread
From: Hanna Reitz @ 2022-02-15 17:13 UTC (permalink / raw)
To: qemu-block
Cc: Paolo Bonzini, John Snow, qemu-devel, Philippe Mathieu-Daudé
Ping
(I can take it too, if you’d like, John, but you’re listed as the only
maintainer for hw/ide, so... Just say the word, though!)
On 20.01.22 15:22, Hanna Reitz wrote:
> When we still have an AIOCB registered for DMA operations, we try to
> settle the respective operation by draining the BlockBackend associated
> with the IDE device.
>
> However, this assumes that every DMA operation is associated with an
> increment of the BlockBackend’s in-flight counter (e.g. through some
> ongoing I/O operation), so that draining the BB until its in-flight
> counter reaches 0 will settle all DMA operations. That is not the case:
> For TRIM, the guest can issue a zero-length operation that will not
> result in any I/O operation forwarded to the BlockBackend, and also not
> increment the in-flight counter in any other way. In such a case,
> blk_drain() will be a no-op if no other operations are in flight.
>
> It is clear that if blk_drain() is a no-op, the value of
> s->bus->dma->aiocb will not change between checking it in the `if`
> condition and asserting that it is NULL after blk_drain().
>
> The particular problem is that ide_issue_trim() creates a BH
> (ide_trim_bh_cb()) to settle the TRIM request: iocb->common.cb() is
> ide_dma_cb(), which will either create a new request, or find the
> transfer to be done and call ide_set_inactive(), which clears
> s->bus->dma->aiocb. Therefore, the blk_drain() must wait for
> ide_trim_bh_cb() to run, which currently it will not always do.
>
> To fix this issue, we increment the BlockBackend's in-flight counter
> when the TRIM operation begins (in ide_issue_trim(), when the
> ide_trim_bh_cb() BH is created) and decrement it when ide_trim_bh_cb()
> is done.
>
> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2029980
> Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
> ---
> v1:
> https://lists.nongnu.org/archive/html/qemu-block/2022-01/msg00024.html
>
> v2:
> - Increment BB’s in-flight counter while the BH is active so that
> blk_drain() will poll until the BH is done, as suggested by Paolo
>
> (No git-backport-diff, because this patch was basically completely
> rewritten, so it wouldn’t be worth it.)
> ---
> hw/ide/core.c | 7 +++++++
> 1 file changed, 7 insertions(+)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ide: Increment BB in-flight counter for TRIM BH
2022-02-15 17:13 ` Hanna Reitz
@ 2022-02-17 21:02 ` John Snow
2022-02-21 8:05 ` Hanna Reitz
0 siblings, 1 reply; 8+ messages in thread
From: John Snow @ 2022-02-17 21:02 UTC (permalink / raw)
To: Hanna Reitz
Cc: Paolo Bonzini, qemu-devel, Qemu-block,
Philippe Mathieu-Daudé
On Tue, Feb 15, 2022 at 12:14 PM Hanna Reitz <hreitz@redhat.com> wrote:
>
> Ping
>
> (I can take it too, if you’d like, John, but you’re listed as the only
> maintainer for hw/ide, so... Just say the word, though!)
>
Sorry, I sent you a mail off-list at the time where I said you were
free to take it whenever you like. Why'd I send it off-list? I don't
know....
Please feel free to send this with your next block PR.
--js
> On 20.01.22 15:22, Hanna Reitz wrote:
> > When we still have an AIOCB registered for DMA operations, we try to
> > settle the respective operation by draining the BlockBackend associated
> > with the IDE device.
> >
> > However, this assumes that every DMA operation is associated with an
> > increment of the BlockBackend’s in-flight counter (e.g. through some
> > ongoing I/O operation), so that draining the BB until its in-flight
> > counter reaches 0 will settle all DMA operations. That is not the case:
> > For TRIM, the guest can issue a zero-length operation that will not
> > result in any I/O operation forwarded to the BlockBackend, and also not
> > increment the in-flight counter in any other way. In such a case,
> > blk_drain() will be a no-op if no other operations are in flight.
> >
> > It is clear that if blk_drain() is a no-op, the value of
> > s->bus->dma->aiocb will not change between checking it in the `if`
> > condition and asserting that it is NULL after blk_drain().
> >
> > The particular problem is that ide_issue_trim() creates a BH
> > (ide_trim_bh_cb()) to settle the TRIM request: iocb->common.cb() is
> > ide_dma_cb(), which will either create a new request, or find the
> > transfer to be done and call ide_set_inactive(), which clears
> > s->bus->dma->aiocb. Therefore, the blk_drain() must wait for
> > ide_trim_bh_cb() to run, which currently it will not always do.
> >
> > To fix this issue, we increment the BlockBackend's in-flight counter
> > when the TRIM operation begins (in ide_issue_trim(), when the
> > ide_trim_bh_cb() BH is created) and decrement it when ide_trim_bh_cb()
> > is done.
> >
> > Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2029980
> > Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
> > Signed-off-by: Hanna Reitz <hreitz@redhat.com>
> > ---
> > v1:
> > https://lists.nongnu.org/archive/html/qemu-block/2022-01/msg00024.html
> >
> > v2:
> > - Increment BB’s in-flight counter while the BH is active so that
> > blk_drain() will poll until the BH is done, as suggested by Paolo
> >
> > (No git-backport-diff, because this patch was basically completely
> > rewritten, so it wouldn’t be worth it.)
> > ---
> > hw/ide/core.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ide: Increment BB in-flight counter for TRIM BH
2022-02-17 21:02 ` John Snow
@ 2022-02-21 8:05 ` Hanna Reitz
0 siblings, 0 replies; 8+ messages in thread
From: Hanna Reitz @ 2022-02-21 8:05 UTC (permalink / raw)
To: John Snow
Cc: Paolo Bonzini, qemu-devel, Qemu-block,
Philippe Mathieu-Daudé
On 17.02.22 22:02, John Snow wrote:
> On Tue, Feb 15, 2022 at 12:14 PM Hanna Reitz <hreitz@redhat.com> wrote:
>> Ping
>>
>> (I can take it too, if you’d like, John, but you’re listed as the only
>> maintainer for hw/ide, so... Just say the word, though!)
>>
> Sorry, I sent you a mail off-list at the time where I said you were
> free to take it whenever you like. Why'd I send it off-list? I don't
> know....
>
> Please feel free to send this with your next block PR.
Oh, oops. You’re right. I seemed to remember you saying something
along those lines, but when I tried to support my memory with some
factual email, I didn’t immediately see it, because I sorted that
off-list mail somewhere else than where I was looking...
Thanks, will do!
Hanna
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-02-21 8:07 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-20 14:22 [PATCH v2] ide: Increment BB in-flight counter for TRIM BH Hanna Reitz
2022-01-21 18:47 ` John Snow
2022-01-24 9:06 ` Hanna Reitz
2022-01-24 18:41 ` John Snow
2022-01-24 9:55 ` Paolo Bonzini
2022-02-15 17:13 ` Hanna Reitz
2022-02-17 21:02 ` John Snow
2022-02-21 8:05 ` Hanna Reitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).