cifs: ask for more credit on async read/write code paths
[ Upstream commit 88fd98a230 ]
When doing a large read or write workload we only
very gradually increase the number of credits
which can cause problems with parallelizing large i/o
(I/O ramps up more slowly than it should for large
read/write workloads) especially with multichannel
when the number of credits on the secondary channels
starts out low (e.g. less than about 130) or when
recovering after server throttled back the number
of credit.
Signed-off-by: Aurelien Aptel <aaptel@suse.com>
Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b8bfda6e08
commit
419ebba40d
+2
-4
@@ -4032,8 +4032,7 @@ smb2_async_readv(struct cifs_readdata *rdata)
|
||||
if (rdata->credits.value > 0) {
|
||||
shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(rdata->bytes,
|
||||
SMB2_MAX_BUFFER_SIZE));
|
||||
shdr->CreditRequest =
|
||||
cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 1);
|
||||
shdr->CreditRequest = cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 8);
|
||||
|
||||
rc = adjust_credits(server, &rdata->credits, rdata->bytes);
|
||||
if (rc)
|
||||
@@ -4339,8 +4338,7 @@ smb2_async_writev(struct cifs_writedata *wdata,
|
||||
if (wdata->credits.value > 0) {
|
||||
shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(wdata->bytes,
|
||||
SMB2_MAX_BUFFER_SIZE));
|
||||
shdr->CreditRequest =
|
||||
cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 1);
|
||||
shdr->CreditRequest = cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 8);
|
||||
|
||||
rc = adjust_credits(server, &wdata->credits, wdata->bytes);
|
||||
if (rc)
|
||||
|
||||
Reference in New Issue
Block a user