lkml.org 
[lkml]   [2021]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 018/221] cifs: ask for more credit on async read/write code paths
    Date
    From: Aurelien Aptel <aaptel@suse.com>

    [ Upstream commit 88fd98a2306755b965e4f4567f84e73db3b6738c ]

    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>
    ---
    fs/cifs/smb2pdu.c | 6 ++----
    1 file changed, 2 insertions(+), 4 deletions(-)

    diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
    index c6f8bc6729aa..d1d550647cd6 100644
    --- a/fs/cifs/smb2pdu.c
    +++ b/fs/cifs/smb2pdu.c
    @@ -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)
    --
    2.30.1


    \
     
     \ /
      Last update: 2021-03-29 10:40    [W:4.144 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site