Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1668394ybz; Thu, 16 Apr 2020 13:18:52 -0700 (PDT) X-Google-Smtp-Source: APiQypIofMWhYYqDr1A9a+9+HdcIx6SDfFVw/sIBf5VwrypXrMGj8rUYY8vrRQk+lAKfybBKBJAF X-Received: by 2002:aa7:c497:: with SMTP id m23mr8021846edq.155.1587068332586; Thu, 16 Apr 2020 13:18:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587068332; cv=none; d=google.com; s=arc-20160816; b=J617poLlc41ey6xsTV0aHCDvBNskP3qKJXx2/RMPtTXP9NoFqyo/qLMRJgCS3raOPq RHFNaInCYeBFzfIrSAObeoMDbEVA95sx3Q7MbPp36iLVhTwpxZTkpWhleO9psITpb4mE U852h4KnutqU4ONIvphsE/mqJdwHVDzxjNvwRXz9pPB1n/ZLas0LdUkofLXz4awFD4G5 BB0vmfIQGwrpciMz2rzyCJi29KWzRoxIRlQnc/yj8RwcE96HEwoqX8mjrONrPndS1CYM U7pbQ8cgeDi4rl04Tw8X7XPUTKbsFSYO9oaCI3xJtxBC0qncSgT0ySKsDkS+jhgQRjgC /evw== 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=cUAx6U67BT1sWd4Xw0KNzArQhzkwR5LdE/Zt5xAZJJI=; b=0KTehO8jftjL5uu4u40nNiORVjHcs4NmCBMGoycFgYctY8hjQnbZ/dDWe4B9NAcd/M IQE3TgLJ4sYuX4M6qe4uoL/jFjSQJtfbEpcIBqYDgO/HzpggHqQondgwf8yEmYF6j6n4 vvoI+BkcDE3gYCjtef3VByhvAO+G7gRCSHPmea7+NN9JMfAmKczMlY1mzisMDZb/Sf9c 3srr9/1RX0C3QMr3rMfpjfo3L4U7Ao+DGHwxJFMKd5g5PZoojsQ7LPdAQVphGaS0V/h1 0/Fe5n8iKk9aA/W48179tkP4jn/sUtbAjgMCE7Su3Olt7LkJ5Q0KAojQM815CcdtJa6b F1sA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=H4WMX06w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f10si9353087ejb.466.2020.04.16.13.18.29; Thu, 16 Apr 2020 13:18:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=H4WMX06w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2441934AbgDPONN (ORCPT + 99 others); Thu, 16 Apr 2020 10:13:13 -0400 Received: from mail.kernel.org ([198.145.29.99]:34818 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2898745AbgDPNsv (ORCPT ); Thu, 16 Apr 2020 09:48:51 -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 CAAD521974; Thu, 16 Apr 2020 13:48:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587044931; bh=BTrJCJjuOs3aKRghzcA2v0wxKBlJaf92GOTS2GDdKQ4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H4WMX06wgbNAxxMzRD2IYpb5safNwhalFcDBsKonVrD9ElSDqsgixzBoWjQHtC5p7 SI1Dy4jHcVKT7E3ZDnuyYib+Ym/POE4Br2+KTPJmFNEBfupf84ROOwBUjIrFtAOHd/ swi7XSZj0ypUb5s3i1/94xOXNQYD5FWel6ywzpFE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Steve French Subject: [PATCH 5.4 133/232] smb3: fix performance regression with setting mtime Date: Thu, 16 Apr 2020 15:23:47 +0200 Message-Id: <20200416131331.637991856@linuxfoundation.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: <20200416131316.640996080@linuxfoundation.org> References: <20200416131316.640996080@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: Steve French commit cf5371ae460eb8e484e4884747af270c86c3c469 upstream. There are cases when we don't want to send the SMB2 flush operation (e.g. when user specifies mount parm "nostrictsync") and it can be a very expensive operation on the server. In most cases in order to set mtime, we simply need to flush (write) the dirtry pages from the client and send the writes to the server not also send a flush protocol operation to the server. Fixes: aa081859b10c ("cifs: flush before set-info if we have writeable handles") CC: Stable Signed-off-by: Steve French Signed-off-by: Greg Kroah-Hartman --- fs/cifs/inode.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -2454,25 +2454,26 @@ cifs_setattr_nounix(struct dentry *diren /* * Attempt to flush data before changing attributes. We need to do - * this for ATTR_SIZE and ATTR_MTIME for sure, and if we change the - * ownership or mode then we may also need to do this. Here, we take - * the safe way out and just do the flush on all setattr requests. If - * the flush returns error, store it to report later and continue. + * this for ATTR_SIZE and ATTR_MTIME. If the flush of the data + * returns error, store it to report later and continue. * * BB: This should be smarter. Why bother flushing pages that * will be truncated anyway? Also, should we error out here if - * the flush returns error? + * the flush returns error? Do we need to check for ATTR_MTIME_SET flag? */ - rc = filemap_write_and_wait(inode->i_mapping); - if (is_interrupt_error(rc)) { - rc = -ERESTARTSYS; - goto cifs_setattr_exit; + if (attrs->ia_valid & (ATTR_MTIME | ATTR_SIZE | ATTR_CTIME)) { + rc = filemap_write_and_wait(inode->i_mapping); + if (is_interrupt_error(rc)) { + rc = -ERESTARTSYS; + goto cifs_setattr_exit; + } + mapping_set_error(inode->i_mapping, rc); } - mapping_set_error(inode->i_mapping, rc); rc = 0; - if (attrs->ia_valid & ATTR_MTIME) { + if ((attrs->ia_valid & ATTR_MTIME) && + !(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NOSSYNC)) { rc = cifs_get_writable_file(cifsInode, FIND_WR_ANY, &wfile); if (!rc) { tcon = tlink_tcon(wfile->tlink);