From patchwork Thu Jan 10 22:24:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Shilovsky X-Patchwork-Id: 1023249 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-cifs-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="GFOSWyeZ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43bLCq0cQ1z9sCs for ; Fri, 11 Jan 2019 09:25:11 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728880AbfAJWZK (ORCPT ); Thu, 10 Jan 2019 17:25:10 -0500 Received: from mail-pf1-f194.google.com ([209.85.210.194]:43354 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727733AbfAJWZK (ORCPT ); Thu, 10 Jan 2019 17:25:10 -0500 Received: by mail-pf1-f194.google.com with SMTP id w73so5940486pfk.10 for ; Thu, 10 Jan 2019 14:25:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=105S6pQ5pA4b/rPVxwVJglt6CcPumATISPUxGARhoGo=; b=GFOSWyeZscI18W8mNS12zIKlGuR9+f0lgrGJWm+ZgUe+CNusMBQ7ifmKpl9hKbuPZ9 w2SOqU5ArD8EfayRlekfFqvuN+Vew+4+nmADgmkO6wQG0HywFFQ5njRKSaMvu25vIF7o gFNalJ4/vNTU0kz9bpvqVlP5jWesHqL64k0FQ36r+yLBp1wFkHybrj29ah94uDwq3/eB 4gbS59V/PR8lF812eHV0oHxvGP/c4GBkrXU41VEJL7GscxbvODbmIPEzy5P/ggEufZYk 5FthZq0iMSZsrDgkDZBcrVxyXhIuGK6MhGHMRsDDawT7/bAO+vuucqVDUjuI/nbjh8Os mk9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=105S6pQ5pA4b/rPVxwVJglt6CcPumATISPUxGARhoGo=; b=bm40rjiJWzPDfL3rXTpBnt05ovVZaPIDQo637Jo0c6ZKy+048jiPZtW1IY8WG4gHk4 r97I9pTkiapNMwDxCoGMMS9PZiQAsYkQwCKgUnpXVmwirSYf15P4IRpn9JbpXVhm84bl tUJUqFuMdwVyD2GzS444sBOC85kuuTw9CBMyiwhvw2By9a+wppIB7X693zV7xn379Jef I81eKbeOvVURUxPjvJEOpFIUhBnJk9ScZauDtU+3HF7uaa7/YCv+WRFDZRSnjM16ga+k 6CUMHWipS3dKjMQueOamGU9f6R/YZJXa/RVfIJ05IbeQPcVtwKgdLw9/WgP5z31aHKsX U4fw== X-Gm-Message-State: AJcUukdgzbl6Nx88dfBO4jV6H5Wy/77CwgHD+q2rWZOcjsC8PV+yjemQ Us5F3sBxSnPXD2yQ3R2bL4NC4uo= X-Google-Smtp-Source: ALg8bN4sY56UqmCivF40mV++kdO2DUKVFAp5RhWutuiB6evorVSK56hK6EoduDT9V1qQYFTeB1FrcQ== X-Received: by 2002:a62:5182:: with SMTP id f124mr12097910pfb.238.1547159108288; Thu, 10 Jan 2019 14:25:08 -0800 (PST) Received: from ubuntu-vm.corp.microsoft.com ([2001:4898:80e8:3:a18b:4e9f:6b7c:507d]) by smtp.gmail.com with ESMTPSA id z127sm118006755pfb.80.2019.01.10.14.25.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 10 Jan 2019 14:25:07 -0800 (PST) From: Pavel Shilovsky X-Google-Original-From: Pavel Shilovsky To: linux-cifs@vger.kernel.org Cc: Steve French , Ronnie Sahlberg Subject: [PATCH 1/7] CIFS: Fix adjustment of credits for MTU requests Date: Thu, 10 Jan 2019 14:24:52 -0800 Message-Id: <1547159098-19011-2-git-send-email-pshilov@microsoft.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547159098-19011-1-git-send-email-pshilov@microsoft.com> References: <1547159098-19011-1-git-send-email-pshilov@microsoft.com> Sender: linux-cifs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-cifs@vger.kernel.org Currently for MTU requests we allocate maximum possible credits in advance and then adjust them according to the request size. While we were adjusting the number of credits belonging to the server, we were skipping adjustment of credits belonging to the request. This patch fixes it by setting request credits to CreditCharge field value of SMB2 packet header. Also ask 1 credit more for async read and write operations to increase parallelism and match the behavior of other operations. Cc: Signed-off-by: Pavel Shilovskiy --- fs/cifs/smb2pdu.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c index e283590..f158825 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -3264,12 +3264,14 @@ smb2_async_readv(struct cifs_readdata *rdata) if (rdata->credits) { shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(rdata->bytes, SMB2_MAX_BUFFER_SIZE)); - shdr->CreditRequest = shdr->CreditCharge; + shdr->CreditRequest = + cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 1); spin_lock(&server->req_lock); server->credits += rdata->credits - le16_to_cpu(shdr->CreditCharge); spin_unlock(&server->req_lock); wake_up(&server->request_q); + rdata->credits = le16_to_cpu(shdr->CreditCharge); flags |= CIFS_HAS_CREDITS; } @@ -3541,12 +3543,14 @@ smb2_async_writev(struct cifs_writedata *wdata, if (wdata->credits) { shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(wdata->bytes, SMB2_MAX_BUFFER_SIZE)); - shdr->CreditRequest = shdr->CreditCharge; + shdr->CreditRequest = + cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 1); spin_lock(&server->req_lock); server->credits += wdata->credits - le16_to_cpu(shdr->CreditCharge); spin_unlock(&server->req_lock); wake_up(&server->request_q); + wdata->credits = le16_to_cpu(shdr->CreditCharge); flags |= CIFS_HAS_CREDITS; }