diff options
author | Marios Makassikis <mmakassikis@freebox.fr> | 2024-12-14 04:16:45 +0100 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2024-12-16 05:20:03 +0100 |
commit | 83c47d9e0ce79b5d7c0b21b9f35402dbde0fa15c (patch) | |
tree | c6097eb7eef632af5075593b27966d6d2dc3fc37 /fs/smb | |
parent | Linux 6.13-rc3 (diff) | |
download | linux-83c47d9e0ce79b5d7c0b21b9f35402dbde0fa15c.tar.xz linux-83c47d9e0ce79b5d7c0b21b9f35402dbde0fa15c.zip |
ksmbd: count all requests in req_running counter
This changes the semantics of req_running to count all in-flight
requests on a given connection, rather than the number of elements
in the conn->request list. The latter is used only in smb2_cancel,
and the counter is not used
Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/smb')
-rw-r--r-- | fs/smb/server/connection.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/smb/server/connection.c b/fs/smb/server/connection.c index c14dd72e1b30..be9656d524a4 100644 --- a/fs/smb/server/connection.c +++ b/fs/smb/server/connection.c @@ -120,8 +120,8 @@ void ksmbd_conn_enqueue_request(struct ksmbd_work *work) if (conn->ops->get_cmd_val(work) != SMB2_CANCEL_HE) requests_queue = &conn->requests; + atomic_inc(&conn->req_running); if (requests_queue) { - atomic_inc(&conn->req_running); spin_lock(&conn->request_lock); list_add_tail(&work->request_entry, requests_queue); spin_unlock(&conn->request_lock); @@ -132,11 +132,12 @@ void ksmbd_conn_try_dequeue_request(struct ksmbd_work *work) { struct ksmbd_conn *conn = work->conn; + atomic_dec(&conn->req_running); + if (list_empty(&work->request_entry) && list_empty(&work->async_request_entry)) return; - atomic_dec(&conn->req_running); spin_lock(&conn->request_lock); list_del_init(&work->request_entry); spin_unlock(&conn->request_lock); |