Commit 10328c44 authored by Steve French's avatar Steve French
Browse files

smb3: only offload decryption of read responses if multiple requests



No point in offloading read decryption if no other requests on the
wire

Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
Signed-off-by: default avatarRonnie Sahlberg <lsahlber@redhat.com>
parent 496902dc
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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)