Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp571987ybn; Thu, 3 Oct 2019 09:02:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqyliblOe0vK877Nj7sbT7tZo61rnD7pdlxz183zkTIh5Gh2jyf8GZKYN3UCziSOxWoISy40 X-Received: by 2002:a17:906:e288:: with SMTP id gg8mr8288015ejb.24.1570118556204; Thu, 03 Oct 2019 09:02:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570118556; cv=none; d=google.com; s=arc-20160816; b=Ggucez2eCiY1Z75m1zXDF1MLqQLqZrsCOB42OXN3/Flk/UyeXmXSZxwIui6vFFJDk0 7T45HdHXyV9d/ZxvRkxozJkN+LqooDMC6L60IU3uLYQVUVo4YCKPNexrYrecpSz8Xqij 6IFEYtkT25iesFI3C+EWUM5N+uAVA1a5z9Dc9bxPQ02HAPdj7WDspQJpit7j/ERVYA1e k1tYbrHyIV+ucp2V9r2lojknhHXMm8kph1ToXYQ++u9Tg2c//X9wMFSqpjepltzcSyKp n40u7CRBP0gJJQtAmskofIKYzc2mGBL3IIQX6h+9drCzYUnmrWHQZZAzDxlmoAGxn89L jiWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ze3aQShk00gV+8Xj13Cf8Opg3GRMD84wAZSJHDS2nXE=; b=d7sFQDL34n3eu4eZoW5nTlZooJY8Mm53mZbY8w+18EDZFxA/uSYyNvD5PrDwVm4pru rfS7ufeL6ag1KrcyXpTT6U26oN4hFwt/YeTYhH+/xcbghwJcyCCOzpdq7rTzk7xjg0FC mdQxq8dGezRVlM255E13Ze6rI9LDwqqWa5smVhyBmCpNIr7ZK2YYXS3tFqcE9yia8uC9 lsmjgEso/A7nEK7ZUZMgjQ1FA4wlZTOrPww6PRaF8uKXV57yTjx19siaEF8bOLkVepO7 V0NIGoYW9T8GAN7YhRgDk8sOc56QTC+baWb1FBTDL58ua4JS/ZRoo5GbTaAtzG8YVCIA 5oBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=WDzpsgZd; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p14si1981596eda.411.2019.10.03.09.02.11; Thu, 03 Oct 2019 09:02:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=WDzpsgZd; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731446AbfJCP7y (ORCPT + 99 others); Thu, 3 Oct 2019 11:59:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:43302 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731434AbfJCP7w (ORCPT ); Thu, 3 Oct 2019 11:59:52 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2EB11222C9; Thu, 3 Oct 2019 15:59:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570118391; bh=kEmCe5eFpDf0pcPFKgaycmMa56SMC86pe2QDKHFiby0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WDzpsgZduYtPLUfbxIdGmm01geD7xFAxFZx6PwolUPUtAe+pCUxRhtCHo0/Rad/BU K/q5rEJ2oKbZ3cwYGLjJFF6MgbM/DsA3SnrFCfsfCxtM3uj6QCFznWcIQxiCThuW+E AxbdEQzJCy+rQ7gI/aLx6i/6ybALNo9rM6yd9bFU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pavel Shilovsky , Steve French , Ronnie Sahlberg Subject: [PATCH 4.4 95/99] CIFS: Fix oplock handling for SMB 2.1+ protocols Date: Thu, 3 Oct 2019 17:53:58 +0200 Message-Id: <20191003154341.829350191@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191003154252.297991283@linuxfoundation.org> References: <20191003154252.297991283@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pavel Shilovsky commit a016e2794fc3a245a91946038dd8f34d65e53cc3 upstream. There may be situations when a server negotiates SMB 2.1 protocol version or higher but responds to a CREATE request with an oplock rather than a lease. Currently the client doesn't handle such a case correctly: when another CREATE comes in the server sends an oplock break to the initial CREATE and the client doesn't send an ack back due to a wrong caching level being set (READ instead of RWH). Missing an oplock break ack makes the server wait until the break times out which dramatically increases the latency of the second CREATE. Fix this by properly detecting oplocks when using SMB 2.1 protocol version and higher. Cc: Signed-off-by: Pavel Shilovsky Signed-off-by: Steve French Reviewed-by: Ronnie Sahlberg Signed-off-by: Greg Kroah-Hartman --- fs/cifs/smb2ops.c | 5 +++++ 1 file changed, 5 insertions(+) --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -1335,6 +1335,11 @@ smb21_set_oplock_level(struct cifsInodeI if (oplock == SMB2_OPLOCK_LEVEL_NOCHANGE) return; + /* Check if the server granted an oplock rather than a lease */ + if (oplock & SMB2_OPLOCK_LEVEL_EXCLUSIVE) + return smb2_set_oplock_level(cinode, oplock, epoch, + purge_cache); + if (oplock & SMB2_LEASE_READ_CACHING_HE) { new_oplock |= CIFS_CACHE_READ_FLG; strcat(message, "R");