* [PATCH 0/3] Simplify SMB2_open_init
@ 2023-03-30 12:04 Volker Lendecke
2023-03-30 12:04 ` [PATCH 1/3] cifs: Simplify SMB2_open_init() Volker Lendecke
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Volker Lendecke @ 2023-03-30 12:04 UTC (permalink / raw)
To: linux-cifs; +Cc: Volker Lendecke
Stitching together can be done in one place, there's no need to do
this in every add_*_context function.
This supersedes the patchet in
https://www.spinics.net/lists/linux-cifs/msg28087.html.
Volker Lendecke (3):
cifs: Simplify SMB2_open_init()
cifs: Simplify SMB2_open_init()
cifs: Simplify SMB2_open_init()
fs/cifs/smb2pdu.c | 106 +++++++++++-----------------------------------
1 file changed, 25 insertions(+), 81 deletions(-)
--
2.30.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] cifs: Simplify SMB2_open_init()
2023-03-30 12:04 [PATCH 0/3] Simplify SMB2_open_init Volker Lendecke
@ 2023-03-30 12:04 ` Volker Lendecke
2023-03-30 12:04 ` [PATCH 2/3] " Volker Lendecke
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Volker Lendecke @ 2023-03-30 12:04 UTC (permalink / raw)
To: linux-cifs; +Cc: Volker Lendecke
We can point to the create contexts in just one place, we don't have
to do this in every add_*_context routine.
Signed-off-by: Volker Lendecke <vl@samba.org>
---
fs/cifs/smb2pdu.c | 45 +++++++++++++--------------------------------
1 file changed, 13 insertions(+), 32 deletions(-)
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 6bd2aa6af18f..5c5a7c3f3064 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -810,10 +810,6 @@ add_posix_context(struct kvec *iov, unsigned int *num_iovec, umode_t mode)
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct create_posix);
- if (!req->CreateContextsOffset)
- req->CreateContextsOffset = cpu_to_le32(
- sizeof(struct smb2_create_req) +
- iov[num - 1].iov_len);
le32_add_cpu(&req->CreateContextsLength, sizeof(struct create_posix));
*num_iovec = num + 1;
return 0;
@@ -2163,10 +2159,6 @@ add_lease_context(struct TCP_Server_Info *server, struct kvec *iov,
return -ENOMEM;
iov[num].iov_len = server->vals->create_lease_size;
req->RequestedOplockLevel = SMB2_OPLOCK_LEVEL_LEASE;
- if (!req->CreateContextsOffset)
- req->CreateContextsOffset = cpu_to_le32(
- sizeof(struct smb2_create_req) +
- iov[num - 1].iov_len);
le32_add_cpu(&req->CreateContextsLength,
server->vals->create_lease_size);
*num_iovec = num + 1;
@@ -2254,10 +2246,6 @@ add_durable_v2_context(struct kvec *iov, unsigned int *num_iovec,
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct create_durable_v2);
- if (!req->CreateContextsOffset)
- req->CreateContextsOffset =
- cpu_to_le32(sizeof(struct smb2_create_req) +
- iov[1].iov_len);
le32_add_cpu(&req->CreateContextsLength, sizeof(struct create_durable_v2));
*num_iovec = num + 1;
return 0;
@@ -2277,10 +2265,6 @@ add_durable_reconnect_v2_context(struct kvec *iov, unsigned int *num_iovec,
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct create_durable_handle_reconnect_v2);
- if (!req->CreateContextsOffset)
- req->CreateContextsOffset =
- cpu_to_le32(sizeof(struct smb2_create_req) +
- iov[1].iov_len);
le32_add_cpu(&req->CreateContextsLength,
sizeof(struct create_durable_handle_reconnect_v2));
*num_iovec = num + 1;
@@ -2311,10 +2295,6 @@ add_durable_context(struct kvec *iov, unsigned int *num_iovec,
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct create_durable);
- if (!req->CreateContextsOffset)
- req->CreateContextsOffset =
- cpu_to_le32(sizeof(struct smb2_create_req) +
- iov[1].iov_len);
le32_add_cpu(&req->CreateContextsLength, sizeof(struct create_durable));
*num_iovec = num + 1;
return 0;
@@ -2356,10 +2336,6 @@ add_twarp_context(struct kvec *iov, unsigned int *num_iovec, __u64 timewarp)
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct crt_twarp_ctxt);
- if (!req->CreateContextsOffset)
- req->CreateContextsOffset = cpu_to_le32(
- sizeof(struct smb2_create_req) +
- iov[num - 1].iov_len);
le32_add_cpu(&req->CreateContextsLength, sizeof(struct crt_twarp_ctxt));
*num_iovec = num + 1;
return 0;
@@ -2491,10 +2467,6 @@ add_sd_context(struct kvec *iov, unsigned int *num_iovec, umode_t mode, bool set
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = len;
- if (!req->CreateContextsOffset)
- req->CreateContextsOffset = cpu_to_le32(
- sizeof(struct smb2_create_req) +
- iov[num - 1].iov_len);
le32_add_cpu(&req->CreateContextsLength, len);
*num_iovec = num + 1;
return 0;
@@ -2533,10 +2505,6 @@ add_query_id_context(struct kvec *iov, unsigned int *num_iovec)
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct crt_query_id_ctxt);
- if (!req->CreateContextsOffset)
- req->CreateContextsOffset = cpu_to_le32(
- sizeof(struct smb2_create_req) +
- iov[num - 1].iov_len);
le32_add_cpu(&req->CreateContextsLength, sizeof(struct crt_query_id_ctxt));
*num_iovec = num + 1;
return 0;
@@ -2700,6 +2668,9 @@ int smb311_posix_mkdir(const unsigned int xid, struct inode *inode,
rc = add_posix_context(iov, &n_iov, mode);
if (rc)
goto err_free_req;
+ req->CreateContextsOffset = cpu_to_le32(
+ sizeof(struct smb2_create_req) +
+ iov[1].iov_len);
pc_buf = iov[n_iov-1].iov_base;
}
@@ -2923,6 +2894,16 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
}
add_query_id_context(iov, &n_iov);
+ if (n_iov > 2) {
+ /*
+ * We have create contexts behind iov[1] (the file
+ * name), point at them from the main create request
+ */
+ req->CreateContextsOffset = cpu_to_le32(
+ sizeof(struct smb2_create_req) +
+ iov[1].iov_len);
+ }
+
rqst->rq_nvec = n_iov;
return 0;
}
--
2.30.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] cifs: Simplify SMB2_open_init()
2023-03-30 12:04 [PATCH 0/3] Simplify SMB2_open_init Volker Lendecke
2023-03-30 12:04 ` [PATCH 1/3] cifs: Simplify SMB2_open_init() Volker Lendecke
@ 2023-03-30 12:04 ` Volker Lendecke
2023-03-30 12:04 ` [PATCH 3/3] " Volker Lendecke
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Volker Lendecke @ 2023-03-30 12:04 UTC (permalink / raw)
To: linux-cifs; +Cc: Volker Lendecke
Reduce code duplication by stitching together create contexts in one
place.
Signed-off-by: Volker Lendecke <vl@samba.org>
---
fs/cifs/smb2pdu.c | 42 +++++++++---------------------------------
1 file changed, 9 insertions(+), 33 deletions(-)
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 5c5a7c3f3064..9160f3a54805 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -2815,14 +2815,6 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
}
if (*oplock == SMB2_OPLOCK_LEVEL_BATCH) {
- /* need to set Next field of lease context if we request it */
- if (server->capabilities & SMB2_GLOBAL_CAP_LEASING) {
- struct create_context *ccontext =
- (struct create_context *)iov[n_iov-1].iov_base;
- ccontext->Next =
- cpu_to_le32(server->vals->create_lease_size);
- }
-
rc = add_durable_context(iov, &n_iov, oparms,
tcon->use_persistent);
if (rc)
@@ -2830,13 +2822,6 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
}
if (tcon->posix_extensions) {
- if (n_iov > 2) {
- struct create_context *ccontext =
- (struct create_context *)iov[n_iov-1].iov_base;
- ccontext->Next =
- cpu_to_le32(iov[n_iov-1].iov_len);
- }
-
rc = add_posix_context(iov, &n_iov, oparms->mode);
if (rc)
return rc;
@@ -2844,13 +2829,6 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
if (tcon->snapshot_time) {
cifs_dbg(FYI, "adding snapshot context\n");
- if (n_iov > 2) {
- struct create_context *ccontext =
- (struct create_context *)iov[n_iov-1].iov_base;
- ccontext->Next =
- cpu_to_le32(iov[n_iov-1].iov_len);
- }
-
rc = add_twarp_context(iov, &n_iov, tcon->snapshot_time);
if (rc)
return rc;
@@ -2874,12 +2852,6 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
set_owner = false;
if (set_owner | set_mode) {
- if (n_iov > 2) {
- struct create_context *ccontext =
- (struct create_context *)iov[n_iov-1].iov_base;
- ccontext->Next = cpu_to_le32(iov[n_iov-1].iov_len);
- }
-
cifs_dbg(FYI, "add sd with mode 0x%x\n", oparms->mode);
rc = add_sd_context(iov, &n_iov, oparms->mode, set_owner);
if (rc)
@@ -2887,11 +2859,6 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
}
}
- if (n_iov > 2) {
- struct create_context *ccontext =
- (struct create_context *)iov[n_iov-1].iov_base;
- ccontext->Next = cpu_to_le32(iov[n_iov-1].iov_len);
- }
add_query_id_context(iov, &n_iov);
if (n_iov > 2) {
@@ -2902,6 +2869,15 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
req->CreateContextsOffset = cpu_to_le32(
sizeof(struct smb2_create_req) +
iov[1].iov_len);
+
+ for (unsigned int i = 2; i < (n_iov-1); i++) {
+ struct kvec *v = &iov[i];
+ size_t len = v->iov_len;
+ struct create_context *cctx =
+ (struct create_context *)v->iov_base;
+
+ cctx->Next = cpu_to_le32(len);
+ }
}
rqst->rq_nvec = n_iov;
--
2.30.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] cifs: Simplify SMB2_open_init()
2023-03-30 12:04 [PATCH 0/3] Simplify SMB2_open_init Volker Lendecke
2023-03-30 12:04 ` [PATCH 1/3] cifs: Simplify SMB2_open_init() Volker Lendecke
2023-03-30 12:04 ` [PATCH 2/3] " Volker Lendecke
@ 2023-03-30 12:04 ` Volker Lendecke
2023-03-30 22:20 ` [PATCH 0/3] Simplify SMB2_open_init Enzo Matsumiya
2023-04-23 6:10 ` Steve French
4 siblings, 0 replies; 7+ messages in thread
From: Volker Lendecke @ 2023-03-30 12:04 UTC (permalink / raw)
To: linux-cifs; +Cc: Volker Lendecke
Reduce code duplication by calculating req->CreateContextsLength in
one place.
This is the last reference to "req" in the add_*_context functions,
remove that parameter.
Signed-off-by: Volker Lendecke <vl@samba.org>
---
fs/cifs/smb2pdu.c | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 9160f3a54805..bd511286536b 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -801,7 +801,6 @@ create_posix_buf(umode_t mode)
static int
add_posix_context(struct kvec *iov, unsigned int *num_iovec, umode_t mode)
{
- struct smb2_create_req *req = iov[0].iov_base;
unsigned int num = *num_iovec;
iov[num].iov_base = create_posix_buf(mode);
@@ -810,7 +809,6 @@ add_posix_context(struct kvec *iov, unsigned int *num_iovec, umode_t mode)
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct create_posix);
- le32_add_cpu(&req->CreateContextsLength, sizeof(struct create_posix));
*num_iovec = num + 1;
return 0;
}
@@ -2159,8 +2157,6 @@ add_lease_context(struct TCP_Server_Info *server, struct kvec *iov,
return -ENOMEM;
iov[num].iov_len = server->vals->create_lease_size;
req->RequestedOplockLevel = SMB2_OPLOCK_LEVEL_LEASE;
- le32_add_cpu(&req->CreateContextsLength,
- server->vals->create_lease_size);
*num_iovec = num + 1;
return 0;
}
@@ -2239,14 +2235,12 @@ static int
add_durable_v2_context(struct kvec *iov, unsigned int *num_iovec,
struct cifs_open_parms *oparms)
{
- struct smb2_create_req *req = iov[0].iov_base;
unsigned int num = *num_iovec;
iov[num].iov_base = create_durable_v2_buf(oparms);
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct create_durable_v2);
- le32_add_cpu(&req->CreateContextsLength, sizeof(struct create_durable_v2));
*num_iovec = num + 1;
return 0;
}
@@ -2255,7 +2249,6 @@ static int
add_durable_reconnect_v2_context(struct kvec *iov, unsigned int *num_iovec,
struct cifs_open_parms *oparms)
{
- struct smb2_create_req *req = iov[0].iov_base;
unsigned int num = *num_iovec;
/* indicate that we don't need to relock the file */
@@ -2265,8 +2258,6 @@ add_durable_reconnect_v2_context(struct kvec *iov, unsigned int *num_iovec,
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct create_durable_handle_reconnect_v2);
- le32_add_cpu(&req->CreateContextsLength,
- sizeof(struct create_durable_handle_reconnect_v2));
*num_iovec = num + 1;
return 0;
}
@@ -2275,7 +2266,6 @@ static int
add_durable_context(struct kvec *iov, unsigned int *num_iovec,
struct cifs_open_parms *oparms, bool use_persistent)
{
- struct smb2_create_req *req = iov[0].iov_base;
unsigned int num = *num_iovec;
if (use_persistent) {
@@ -2295,7 +2285,6 @@ add_durable_context(struct kvec *iov, unsigned int *num_iovec,
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct create_durable);
- le32_add_cpu(&req->CreateContextsLength, sizeof(struct create_durable));
*num_iovec = num + 1;
return 0;
}
@@ -2329,14 +2318,12 @@ create_twarp_buf(__u64 timewarp)
static int
add_twarp_context(struct kvec *iov, unsigned int *num_iovec, __u64 timewarp)
{
- struct smb2_create_req *req = iov[0].iov_base;
unsigned int num = *num_iovec;
iov[num].iov_base = create_twarp_buf(timewarp);
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct crt_twarp_ctxt);
- le32_add_cpu(&req->CreateContextsLength, sizeof(struct crt_twarp_ctxt));
*num_iovec = num + 1;
return 0;
}
@@ -2459,7 +2446,6 @@ create_sd_buf(umode_t mode, bool set_owner, unsigned int *len)
static int
add_sd_context(struct kvec *iov, unsigned int *num_iovec, umode_t mode, bool set_owner)
{
- struct smb2_create_req *req = iov[0].iov_base;
unsigned int num = *num_iovec;
unsigned int len = 0;
@@ -2467,7 +2453,6 @@ add_sd_context(struct kvec *iov, unsigned int *num_iovec, umode_t mode, bool set
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = len;
- le32_add_cpu(&req->CreateContextsLength, len);
*num_iovec = num + 1;
return 0;
}
@@ -2498,14 +2483,12 @@ create_query_id_buf(void)
static int
add_query_id_context(struct kvec *iov, unsigned int *num_iovec)
{
- struct smb2_create_req *req = iov[0].iov_base;
unsigned int num = *num_iovec;
iov[num].iov_base = create_query_id_buf();
if (iov[num].iov_base == NULL)
return -ENOMEM;
iov[num].iov_len = sizeof(struct crt_query_id_ctxt);
- le32_add_cpu(&req->CreateContextsLength, sizeof(struct crt_query_id_ctxt));
*num_iovec = num + 1;
return 0;
}
@@ -2869,6 +2852,7 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
req->CreateContextsOffset = cpu_to_le32(
sizeof(struct smb2_create_req) +
iov[1].iov_len);
+ req->CreateContextsLength = 0;
for (unsigned int i = 2; i < (n_iov-1); i++) {
struct kvec *v = &iov[i];
@@ -2877,7 +2861,10 @@ SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
(struct create_context *)v->iov_base;
cctx->Next = cpu_to_le32(len);
+ le32_add_cpu(&req->CreateContextsLength, len);
}
+ le32_add_cpu(&req->CreateContextsLength,
+ iov[n_iov-1].iov_len);
}
rqst->rq_nvec = n_iov;
--
2.30.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] Simplify SMB2_open_init
2023-03-30 12:04 [PATCH 0/3] Simplify SMB2_open_init Volker Lendecke
` (2 preceding siblings ...)
2023-03-30 12:04 ` [PATCH 3/3] " Volker Lendecke
@ 2023-03-30 22:20 ` Enzo Matsumiya
2023-03-30 22:25 ` Steve French
2023-04-23 6:10 ` Steve French
4 siblings, 1 reply; 7+ messages in thread
From: Enzo Matsumiya @ 2023-03-30 22:20 UTC (permalink / raw)
To: Volker Lendecke; +Cc: linux-cifs
Hi Volker,
On 03/30, Volker Lendecke wrote:
>Stitching together can be done in one place, there's no need to do
>this in every add_*_context function.
>
>This supersedes the patchet in
>
>https://www.spinics.net/lists/linux-cifs/msg28087.html.
>
>Volker Lendecke (3):
> cifs: Simplify SMB2_open_init()
> cifs: Simplify SMB2_open_init()
> cifs: Simplify SMB2_open_init()
>
> fs/cifs/smb2pdu.c | 106 +++++++++++-----------------------------------
> 1 file changed, 25 insertions(+), 81 deletions(-)
Would you mind using more descriptive titles please? To make
referencing/backporting easier.
Also IMHO patches 1/3 and 3/3 could be merged into a single patch.
Aside from that, Reviewed-by: Enzo Matsumiya <ematsumiya@suse.de>
Cheers,
Enzo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] Simplify SMB2_open_init
2023-03-30 22:20 ` [PATCH 0/3] Simplify SMB2_open_init Enzo Matsumiya
@ 2023-03-30 22:25 ` Steve French
0 siblings, 0 replies; 7+ messages in thread
From: Steve French @ 2023-03-30 22:25 UTC (permalink / raw)
To: Enzo Matsumiya; +Cc: Volker Lendecke, linux-cifs
My main worry is that these are done in the way that makes it easier
for Ronnie/Enzo/Paulo etc. to backport - since we have plenty of
bugs/features to work on that they will be wanting to backport over
the next few releases - and don't want to make their life too much
harder - but these changes look reasonably small
On Thu, Mar 30, 2023 at 5:21 PM Enzo Matsumiya <ematsumiya@suse.de> wrote:
>
> Hi Volker,
>
> On 03/30, Volker Lendecke wrote:
> >Stitching together can be done in one place, there's no need to do
> >this in every add_*_context function.
> >
> >This supersedes the patchet in
> >
> >https://www.spinics.net/lists/linux-cifs/msg28087.html.
> >
> >Volker Lendecke (3):
> > cifs: Simplify SMB2_open_init()
> > cifs: Simplify SMB2_open_init()
> > cifs: Simplify SMB2_open_init()
> >
> > fs/cifs/smb2pdu.c | 106 +++++++++++-----------------------------------
> > 1 file changed, 25 insertions(+), 81 deletions(-)
>
> Would you mind using more descriptive titles please? To make
> referencing/backporting easier.
>
> Also IMHO patches 1/3 and 3/3 could be merged into a single patch.
>
> Aside from that, Reviewed-by: Enzo Matsumiya <ematsumiya@suse.de>
>
>
> Cheers,
>
> Enzo
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/3] Simplify SMB2_open_init
2023-03-30 12:04 [PATCH 0/3] Simplify SMB2_open_init Volker Lendecke
` (3 preceding siblings ...)
2023-03-30 22:20 ` [PATCH 0/3] Simplify SMB2_open_init Enzo Matsumiya
@ 2023-04-23 6:10 ` Steve French
4 siblings, 0 replies; 7+ messages in thread
From: Steve French @ 2023-04-23 6:10 UTC (permalink / raw)
To: Volker Lendecke; +Cc: linux-cifs, David Disseldorp
Let me know if any updated patches (with merge window approaching soon)
On Thu, Mar 30, 2023 at 7:16 AM Volker Lendecke <vl@samba.org> wrote:
>
> Stitching together can be done in one place, there's no need to do
> this in every add_*_context function.
>
> This supersedes the patchet in
>
> https://www.spinics.net/lists/linux-cifs/msg28087.html.
>
> Volker Lendecke (3):
> cifs: Simplify SMB2_open_init()
> cifs: Simplify SMB2_open_init()
> cifs: Simplify SMB2_open_init()
>
> fs/cifs/smb2pdu.c | 106 +++++++++++-----------------------------------
> 1 file changed, 25 insertions(+), 81 deletions(-)
>
> --
> 2.30.2
>
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-04-23 6:10 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-30 12:04 [PATCH 0/3] Simplify SMB2_open_init Volker Lendecke
2023-03-30 12:04 ` [PATCH 1/3] cifs: Simplify SMB2_open_init() Volker Lendecke
2023-03-30 12:04 ` [PATCH 2/3] " Volker Lendecke
2023-03-30 12:04 ` [PATCH 3/3] " Volker Lendecke
2023-03-30 22:20 ` [PATCH 0/3] Simplify SMB2_open_init Enzo Matsumiya
2023-03-30 22:25 ` Steve French
2023-04-23 6:10 ` Steve French
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.