Skip to content

Commit

Permalink
smb3: only offload decryption of read responses if multiple requests
Browse files Browse the repository at this point in the history
No point in offloading read decryption if no other requests on the
wire

Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
  • Loading branch information
Steve French committed Sep 16, 2019
1 parent 496902d commit 10328c4
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
9 changes: 6 additions & 3 deletions fs/cifs/cifsfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1503,11 +1503,14 @@ init_cifs(void)
}

/*
* BB Consider setting limit!=0 maybe to min(num_of_cores - 1, 3) so we
* don't launch too many worker threads
* Consider in future setting limit!=0 maybe to min(num_of_cores - 1, 3)
* so that we don't launch too many worker threads but
* Documentation/workqueue.txt recommends setting it to 0
*/

/* WQ_UNBOUND allows decrypt tasks to run on any CPU */
decrypt_wq = alloc_workqueue("smb3decryptd",
WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);
WQ_UNBOUND|WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);
if (!decrypt_wq) {
rc = -ENOMEM;
goto out_destroy_cifsiod_wq;
Expand Down
2 changes: 1 addition & 1 deletion fs/cifs/smb2ops.c
Original file line number Diff line number Diff line change
Expand Up @@ -4121,7 +4121,7 @@ receive_encrypted_read(struct TCP_Server_Info *server, struct mid_q_entry **mid,
* use more cores decrypting which can be expensive
*/

if ((server->min_offload) &&
if ((server->min_offload) && (server->in_flight > 1) &&
(server->pdu_size >= server->min_offload)) {
dw = kmalloc(sizeof(struct smb2_decrypt_work), GFP_KERNEL);
if (dw == NULL)
Expand Down

0 comments on commit 10328c4

Please sign in to comment.