* [PATCH 0/5] fuse: over-io-uring fixes
@ 2025-01-23 16:55 Bernd Schubert
2025-01-23 16:55 ` [PATCH 1/5] fuse: Fix copy_from_user error return code in fuse_uring_commit Bernd Schubert
` (5 more replies)
0 siblings, 6 replies; 12+ messages in thread
From: Bernd Schubert @ 2025-01-23 16:55 UTC (permalink / raw)
To: Miklos Szeredi
Cc: Dan Carpenter, Luis Henriques, Joanne Koong, linux-fsdevel,
Bernd Schubert
This is a list of fixes that came up from review of Luis
and smatch run from Dan.
I didn't put in commit id in the "Fixes:" line, as it is
fuse-io-uring is in linux next only and might get rebases
with new IDs.
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
---
Bernd Schubert (5):
fuse: Fix copy_from_user error return code in fuse_uring_commit
fuse: Remove an err= assignment and move a comment
fuse: prevent disabling io-uring on active connections
fuse: Remove unneeded include in fuse_dev_i.h
fuse: Fix the struct fuse_args->in_args array size
fs/fuse/dev_uring.c | 23 ++++++++++++-----------
fs/fuse/fuse_dev_i.h | 1 -
fs/fuse/fuse_i.h | 2 +-
3 files changed, 13 insertions(+), 13 deletions(-)
---
base-commit: a5ca7ba2e604b5d4eb54e1e2746851fdd5d9e98f
change-id: 20250123-fuse-uring-for-6-14-incremental-to-v10-b6b916b77720
Best regards,
--
Bernd Schubert <bschubert@ddn.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/5] fuse: Fix copy_from_user error return code in fuse_uring_commit
2025-01-23 16:55 [PATCH 0/5] fuse: over-io-uring fixes Bernd Schubert
@ 2025-01-23 16:55 ` Bernd Schubert
2025-01-23 16:55 ` [PATCH 2/5] fuse: Remove an err= assignment and move a comment Bernd Schubert
` (4 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: Bernd Schubert @ 2025-01-23 16:55 UTC (permalink / raw)
To: Miklos Szeredi
Cc: Dan Carpenter, Luis Henriques, Joanne Koong, linux-fsdevel,
Bernd Schubert
Return code was accidentally set to the result, which
can be a positive value with the number of bytes that
could not be copied. Set to -EFAULT.
Fixes: fuse: Add io-uring sqe commit and fetch support
Spotted in review by: Luis Henriques <luis@igalia.com>
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
---
fs/fuse/dev_uring.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c
index 5f10f3880d5a4869d8a040567025c60e75d962c6..8e15acb3d350d223c64423233f3613b6eee075da 100644
--- a/fs/fuse/dev_uring.c
+++ b/fs/fuse/dev_uring.c
@@ -779,7 +779,7 @@ static void fuse_uring_commit(struct fuse_ring_ent *ent,
err = copy_from_user(&req->out.h, &ent->headers->in_out,
sizeof(req->out.h));
if (err) {
- req->out.h.error = err;
+ req->out.h.error = -EFAULT;
goto out;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/5] fuse: Remove an err= assignment and move a comment
2025-01-23 16:55 [PATCH 0/5] fuse: over-io-uring fixes Bernd Schubert
2025-01-23 16:55 ` [PATCH 1/5] fuse: Fix copy_from_user error return code in fuse_uring_commit Bernd Schubert
@ 2025-01-23 16:55 ` Bernd Schubert
2025-01-23 16:55 ` [PATCH 3/5] fuse: prevent disabling io-uring on active connections Bernd Schubert
` (3 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: Bernd Schubert @ 2025-01-23 16:55 UTC (permalink / raw)
To: Miklos Szeredi
Cc: Dan Carpenter, Luis Henriques, Joanne Koong, linux-fsdevel,
Bernd Schubert
The err assignment is not needed as it was already set to that value before
and comment is better in the calling function, as it is about the
queue object that.
Fixes: fuse: {io-uring} Handle SQEs - register commands
Spotted in review by: Luis Henriques <luis@igalia.com>
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
---
fs/fuse/dev_uring.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c
index 8e15acb3d350d223c64423233f3613b6eee075da..8e46cddde34539af398290f26db120713520ee51 100644
--- a/fs/fuse/dev_uring.c
+++ b/fs/fuse/dev_uring.c
@@ -1018,10 +1018,6 @@ fuse_uring_create_ring_ent(struct io_uring_cmd *cmd,
return ERR_PTR(err);
}
- /*
- * The created queue above does not need to be destructed in
- * case of entry errors below, will be done at ring destruction time.
- */
err = -ENOMEM;
ent = kzalloc(sizeof(*ent), GFP_KERNEL_ACCOUNT);
if (!ent)
@@ -1063,7 +1059,6 @@ static int fuse_uring_register(struct io_uring_cmd *cmd,
return -EINVAL;
}
- err = -ENOMEM;
queue = ring->queues[qid];
if (!queue) {
queue = fuse_uring_create_queue(ring, qid);
@@ -1071,6 +1066,11 @@ static int fuse_uring_register(struct io_uring_cmd *cmd,
return err;
}
+ /*
+ * The created queue above does not need to be destructed in
+ * case of entry errors below, will be done at ring destruction time.
+ */
+
ent = fuse_uring_create_ring_ent(cmd, queue);
if (IS_ERR(ent))
return PTR_ERR(ent);
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/5] fuse: prevent disabling io-uring on active connections
2025-01-23 16:55 [PATCH 0/5] fuse: over-io-uring fixes Bernd Schubert
2025-01-23 16:55 ` [PATCH 1/5] fuse: Fix copy_from_user error return code in fuse_uring_commit Bernd Schubert
2025-01-23 16:55 ` [PATCH 2/5] fuse: Remove an err= assignment and move a comment Bernd Schubert
@ 2025-01-23 16:55 ` Bernd Schubert
2025-01-23 16:55 ` [PATCH 4/5] fuse: Remove unneeded include in fuse_dev_i.h Bernd Schubert
` (2 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: Bernd Schubert @ 2025-01-23 16:55 UTC (permalink / raw)
To: Miklos Szeredi
Cc: Dan Carpenter, Luis Henriques, Joanne Koong, linux-fsdevel,
Bernd Schubert
The enable_uring module parameter allows administrators to enable/disable
io-uring support for FUSE at runtime. However, disabling io-uring while
connections already have it enabled can lead to an inconsistent state.
Fix this by keeping io-uring enabled on connections that were already using
it, even if the module parameter is later disabled. This ensures active
FUSE mounts continue to function correctly.
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
---
fs/fuse/dev_uring.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c
index 8e46cddde34539af398290f26db120713520ee51..a2abcde3f074459de3dba55727c5159f0a257521 100644
--- a/fs/fuse/dev_uring.c
+++ b/fs/fuse/dev_uring.c
@@ -1091,11 +1091,6 @@ int fuse_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
u32 cmd_op = cmd->cmd_op;
int err;
- if (!enable_uring) {
- pr_info_ratelimited("fuse-io-uring is disabled\n");
- return -EOPNOTSUPP;
- }
-
if ((unlikely(issue_flags & IO_URING_F_CANCEL))) {
fuse_uring_cancel(cmd, issue_flags);
return 0;
@@ -1112,6 +1107,12 @@ int fuse_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
}
fc = fud->fc;
+ /* Once a connection has io-uring enabled on it, it can't be disabled */
+ if (!enable_uring && !fc->io_uring) {
+ pr_info_ratelimited("fuse-io-uring is disabled\n");
+ return -EOPNOTSUPP;
+ }
+
if (fc->aborted)
return -ECONNABORTED;
if (!fc->connected)
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 4/5] fuse: Remove unneeded include in fuse_dev_i.h
2025-01-23 16:55 [PATCH 0/5] fuse: over-io-uring fixes Bernd Schubert
` (2 preceding siblings ...)
2025-01-23 16:55 ` [PATCH 3/5] fuse: prevent disabling io-uring on active connections Bernd Schubert
@ 2025-01-23 16:55 ` Bernd Schubert
2025-01-23 16:55 ` [PATCH 5/5] fuse: Fix the struct fuse_args->in_args array size Bernd Schubert
2025-01-24 8:59 ` [PATCH 0/5] fuse: over-io-uring fixes Luis Henriques
5 siblings, 0 replies; 12+ messages in thread
From: Bernd Schubert @ 2025-01-23 16:55 UTC (permalink / raw)
To: Miklos Szeredi
Cc: Dan Carpenter, Luis Henriques, Joanne Koong, linux-fsdevel,
Bernd Schubert
This include was accidentally added and is not needed.
Fixes: fuse: {io-uring} Make hash-list req unique finding functions non-static
Spotted in review by: Luis Henriques <luis@igalia.com>
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
---
fs/fuse/fuse_dev_i.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/fs/fuse/fuse_dev_i.h b/fs/fuse/fuse_dev_i.h
index 429661ae065464c62a093cf719c5ece38686bbbe..3b2bfe1248d3573abe3b144a6d4bf6a502f56a40 100644
--- a/fs/fuse/fuse_dev_i.h
+++ b/fs/fuse/fuse_dev_i.h
@@ -7,7 +7,6 @@
#define _FS_FUSE_DEV_I_H
#include <linux/types.h>
-#include <linux/fs.h>
/* Ordinary requests have even IDs, while interrupts IDs are odd */
#define FUSE_INT_REQ_BIT (1ULL << 0)
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 5/5] fuse: Fix the struct fuse_args->in_args array size
2025-01-23 16:55 [PATCH 0/5] fuse: over-io-uring fixes Bernd Schubert
` (3 preceding siblings ...)
2025-01-23 16:55 ` [PATCH 4/5] fuse: Remove unneeded include in fuse_dev_i.h Bernd Schubert
@ 2025-01-23 16:55 ` Bernd Schubert
2025-01-24 8:59 ` [PATCH 0/5] fuse: over-io-uring fixes Luis Henriques
5 siblings, 0 replies; 12+ messages in thread
From: Bernd Schubert @ 2025-01-23 16:55 UTC (permalink / raw)
To: Miklos Szeredi
Cc: Dan Carpenter, Luis Henriques, Joanne Koong, linux-fsdevel,
Bernd Schubert
The patch that made in_args[0] to be alway the header,
missed that the array size for in_args is too small for
some operations.
Fixes: fuse: make args->in_args[0] to be always the header
Spotted by: smatch / Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Bernd Schubert <bschubert@ddn.com>
---
fs/fuse/fuse_i.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 886c3af2195892cb2ca0a171cd7b930b6e92484c..fee96fe7887b30cd57b8a6bbda11447a228cf446 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -310,7 +310,7 @@ struct fuse_args {
bool is_ext:1;
bool is_pinned:1;
bool invalidate_vmap:1;
- struct fuse_in_arg in_args[3];
+ struct fuse_in_arg in_args[4];
struct fuse_arg out_args[2];
void (*end)(struct fuse_mount *fm, struct fuse_args *args, int error);
/* Used for kvec iter backed by vmalloc address */
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] fuse: over-io-uring fixes
2025-01-23 16:55 [PATCH 0/5] fuse: over-io-uring fixes Bernd Schubert
` (4 preceding siblings ...)
2025-01-23 16:55 ` [PATCH 5/5] fuse: Fix the struct fuse_args->in_args array size Bernd Schubert
@ 2025-01-24 8:59 ` Luis Henriques
2025-01-24 10:25 ` Miklos Szeredi
2025-01-24 18:56 ` Joanne Koong
5 siblings, 2 replies; 12+ messages in thread
From: Luis Henriques @ 2025-01-24 8:59 UTC (permalink / raw)
To: Bernd Schubert; +Cc: Miklos Szeredi, Dan Carpenter, Joanne Koong, linux-fsdevel
Hi Bernd,
On Thu, Jan 23 2025, Bernd Schubert wrote:
> This is a list of fixes that came up from review of Luis
> and smatch run from Dan.
> I didn't put in commit id in the "Fixes:" line, as it is
> fuse-io-uring is in linux next only and might get rebases
> with new IDs.
Thank you for this, Bernd. And sorry for the extra work -- I should have
sent these patches myself instead of simply sending review comments. :-(
Anyway, they all look good, and probably they should simply be squashed
into the respective patches they are fixing. If they are kept separately,
feel free to add my
Reviewed-by: Luis Henriques <luis@igalia.com>
Cheers,
--
Luís
> Signed-off-by: Bernd Schubert <bschubert@ddn.com>
> ---
> Bernd Schubert (5):
> fuse: Fix copy_from_user error return code in fuse_uring_commit
> fuse: Remove an err= assignment and move a comment
> fuse: prevent disabling io-uring on active connections
> fuse: Remove unneeded include in fuse_dev_i.h
> fuse: Fix the struct fuse_args->in_args array size
>
> fs/fuse/dev_uring.c | 23 ++++++++++++-----------
> fs/fuse/fuse_dev_i.h | 1 -
> fs/fuse/fuse_i.h | 2 +-
> 3 files changed, 13 insertions(+), 13 deletions(-)
> ---
> base-commit: a5ca7ba2e604b5d4eb54e1e2746851fdd5d9e98f
> change-id: 20250123-fuse-uring-for-6-14-incremental-to-v10-b6b916b77720
>
> Best regards,
> --
> Bernd Schubert <bschubert@ddn.com>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] fuse: over-io-uring fixes
2025-01-24 8:59 ` [PATCH 0/5] fuse: over-io-uring fixes Luis Henriques
@ 2025-01-24 10:25 ` Miklos Szeredi
2025-01-24 10:44 ` Luis Henriques
2025-01-24 13:22 ` Bernd Schubert
2025-01-24 18:56 ` Joanne Koong
1 sibling, 2 replies; 12+ messages in thread
From: Miklos Szeredi @ 2025-01-24 10:25 UTC (permalink / raw)
To: Luis Henriques; +Cc: Bernd Schubert, Dan Carpenter, Joanne Koong, linux-fsdevel
On Fri, 24 Jan 2025 at 10:00, Luis Henriques <luis@igalia.com> wrote:
> Anyway, they all look good, and probably they should simply be squashed
> into the respective patches they are fixing. If they are kept separately,
> feel free to add my
I folded these fixes, except the enable_uring fix, which has no obvious target.
> Reviewed-by: Luis Henriques <luis@igalia.com>
Luis, you seem to have done a though review of the patches (thank
you!) May I add your RVB to the complete patchset?
Thanks,
Miklos
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] fuse: over-io-uring fixes
2025-01-24 10:25 ` Miklos Szeredi
@ 2025-01-24 10:44 ` Luis Henriques
2025-01-24 13:22 ` Bernd Schubert
1 sibling, 0 replies; 12+ messages in thread
From: Luis Henriques @ 2025-01-24 10:44 UTC (permalink / raw)
To: Miklos Szeredi; +Cc: Bernd Schubert, Dan Carpenter, Joanne Koong, linux-fsdevel
On Fri, Jan 24 2025, Miklos Szeredi wrote:
> On Fri, 24 Jan 2025 at 10:00, Luis Henriques <luis@igalia.com> wrote:
>
>> Anyway, they all look good, and probably they should simply be squashed
>> into the respective patches they are fixing. If they are kept separately,
>> feel free to add my
>
> I folded these fixes, except the enable_uring fix, which has no obvious target.
>
>> Reviewed-by: Luis Henriques <luis@igalia.com>
>
> Luis, you seem to have done a though review of the patches (thank
> you!) May I add your RVB to the complete patchset?
Yes, sure. Feel free to add it to the whole series, thanks.
Cheers,
--
Luís
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] fuse: over-io-uring fixes
2025-01-24 10:25 ` Miklos Szeredi
2025-01-24 10:44 ` Luis Henriques
@ 2025-01-24 13:22 ` Bernd Schubert
1 sibling, 0 replies; 12+ messages in thread
From: Bernd Schubert @ 2025-01-24 13:22 UTC (permalink / raw)
To: Miklos Szeredi, Luis Henriques
Cc: Dan Carpenter, Joanne Koong, linux-fsdevel@vger.kernel.org
On 1/24/25 11:25, Miklos Szeredi wrote:
> On Fri, 24 Jan 2025 at 10:00, Luis Henriques <luis@igalia.com> wrote:
>
>> Anyway, they all look good, and probably they should simply be squashed
>> into the respective patches they are fixing. If they are kept separately,
>> feel free to add my
>
> I folded these fixes, except the enable_uring fix, which has no obvious target.
>
>> Reviewed-by: Luis Henriques <luis@igalia.com>
>
> Luis, you seem to have done a though review of the patches (thank
> you!) May I add your RVB to the complete patchset?
Definitely big "Thanks" Luis! And sorry for all the extra work Miklos (and also
your reviews). Maybe you could add to the "enable_uring" fix a
"Reported-by: Luis Henriques <luis@igalia.com>" (sorry, should have done that
in the first place).
Thanks,
Bernd
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] fuse: over-io-uring fixes
2025-01-24 8:59 ` [PATCH 0/5] fuse: over-io-uring fixes Luis Henriques
2025-01-24 10:25 ` Miklos Szeredi
@ 2025-01-24 18:56 ` Joanne Koong
2025-01-24 18:59 ` Bernd Schubert
1 sibling, 1 reply; 12+ messages in thread
From: Joanne Koong @ 2025-01-24 18:56 UTC (permalink / raw)
To: Luis Henriques
Cc: Bernd Schubert, Miklos Szeredi, Dan Carpenter, linux-fsdevel
On Fri, Jan 24, 2025 at 1:00 AM Luis Henriques <luis@igalia.com> wrote:
>
> Hi Bernd,
>
> On Thu, Jan 23 2025, Bernd Schubert wrote:
>
> > This is a list of fixes that came up from review of Luis
> > and smatch run from Dan.
> > I didn't put in commit id in the "Fixes:" line, as it is
> > fuse-io-uring is in linux next only and might get rebases
> > with new IDs.
>
> Thank you for this, Bernd. And sorry for the extra work -- I should have
> sent these patches myself instead of simply sending review comments. :-(
Sorry for the delay, I haven't gotten to looking at the latter
io-uring patches (10 to 17) yet in v10.
If there are any minor fixes, Bernd do you prefer that we send review
comments or that we send patches on top of the for-next tree? Thanks
for your hard work on this io-uring series.
Thanks,
Joanne
>
> Anyway, they all look good, and probably they should simply be squashed
> into the respective patches they are fixing. If they are kept separately,
> feel free to add my
>
> Reviewed-by: Luis Henriques <luis@igalia.com>
>
> Cheers,
> --
> Luís
>
> > Signed-off-by: Bernd Schubert <bschubert@ddn.com>
> > ---
> > Bernd Schubert (5):
> > fuse: Fix copy_from_user error return code in fuse_uring_commit
> > fuse: Remove an err= assignment and move a comment
> > fuse: prevent disabling io-uring on active connections
> > fuse: Remove unneeded include in fuse_dev_i.h
> > fuse: Fix the struct fuse_args->in_args array size
> >
> > fs/fuse/dev_uring.c | 23 ++++++++++++-----------
> > fs/fuse/fuse_dev_i.h | 1 -
> > fs/fuse/fuse_i.h | 2 +-
> > 3 files changed, 13 insertions(+), 13 deletions(-)
> > ---
> > base-commit: a5ca7ba2e604b5d4eb54e1e2746851fdd5d9e98f
> > change-id: 20250123-fuse-uring-for-6-14-incremental-to-v10-b6b916b77720
> >
> > Best regards,
> > --
> > Bernd Schubert <bschubert@ddn.com>
> >
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/5] fuse: over-io-uring fixes
2025-01-24 18:56 ` Joanne Koong
@ 2025-01-24 18:59 ` Bernd Schubert
0 siblings, 0 replies; 12+ messages in thread
From: Bernd Schubert @ 2025-01-24 18:59 UTC (permalink / raw)
To: Joanne Koong, Luis Henriques; +Cc: Miklos Szeredi, Dan Carpenter, linux-fsdevel
On 1/24/25 19:56, Joanne Koong wrote:
> On Fri, Jan 24, 2025 at 1:00 AM Luis Henriques <luis@igalia.com> wrote:
>>
>> Hi Bernd,
>>
>> On Thu, Jan 23 2025, Bernd Schubert wrote:
>>
>>> This is a list of fixes that came up from review of Luis
>>> and smatch run from Dan.
>>> I didn't put in commit id in the "Fixes:" line, as it is
>>> fuse-io-uring is in linux next only and might get rebases
>>> with new IDs.
>>
>> Thank you for this, Bernd. And sorry for the extra work -- I should have
>> sent these patches myself instead of simply sending review comments. :-(
>
> Sorry for the delay, I haven't gotten to looking at the latter
> io-uring patches (10 to 17) yet in v10.
> If there are any minor fixes, Bernd do you prefer that we send review
> comments or that we send patches on top of the for-next tree? Thanks
> for your hard work on this io-uring series.
Either way is fine. And thanks for all your reviews!
Cheersm
Bernd
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-01-24 19:01 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-23 16:55 [PATCH 0/5] fuse: over-io-uring fixes Bernd Schubert
2025-01-23 16:55 ` [PATCH 1/5] fuse: Fix copy_from_user error return code in fuse_uring_commit Bernd Schubert
2025-01-23 16:55 ` [PATCH 2/5] fuse: Remove an err= assignment and move a comment Bernd Schubert
2025-01-23 16:55 ` [PATCH 3/5] fuse: prevent disabling io-uring on active connections Bernd Schubert
2025-01-23 16:55 ` [PATCH 4/5] fuse: Remove unneeded include in fuse_dev_i.h Bernd Schubert
2025-01-23 16:55 ` [PATCH 5/5] fuse: Fix the struct fuse_args->in_args array size Bernd Schubert
2025-01-24 8:59 ` [PATCH 0/5] fuse: over-io-uring fixes Luis Henriques
2025-01-24 10:25 ` Miklos Szeredi
2025-01-24 10:44 ` Luis Henriques
2025-01-24 13:22 ` Bernd Schubert
2025-01-24 18:56 ` Joanne Koong
2025-01-24 18:59 ` Bernd Schubert
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.