Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp1475593rdh; Fri, 24 Nov 2023 13:51:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IGM3TGdcr9njs6ei4Mo7Wkfe+jUZ4hnZmtzurR4x/LCdrrHOaQSbBlpFMo9rqIj+0aYSBHn X-Received: by 2002:a05:6808:150c:b0:3b8:3fd7:a194 with SMTP id u12-20020a056808150c00b003b83fd7a194mr5199063oiw.33.1700862697933; Fri, 24 Nov 2023 13:51:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700862697; cv=none; d=google.com; s=arc-20160816; b=bbliu3SJja4l7GVPlzOCGNXf04vjm1YBjMrSAHcdmTabfIhAUdZ+5ORmbgTbini/x6 zRj939jXdjWtMguyiPhdwJRwb7d6inOh2mMnHE5Xgu5uxPI6oLQXoifbOAlg2j72uyDc pU1Ilu96hRkLKg19Hp/3T0Hfh9x+Sc8UYH17YC4PYcWa95D6V6yDmeoDqINDJM4mLkGB UjtB6Y+8kJeFultLuYp/6+FdLUs964+mztWe5ocFKH1wmcGp+mSNhlDZu0klicsFMy7D NZ5OhZaQQmu3Qrl5l1cEXmcwG68Y8gbxCAidThMHIJ5hwwB7Xk8y5c68feW+d/qXTe4I 3zEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:content-id:mime-version:subject :cc:to:from:organization:dkim-signature; bh=Hgj8B8xMgHNPRV+C3WI4kW0phmnLrWnRPCMxmjhfjYA=; fh=H2IvXKtpqN+TGOzMzpEkVtZK2g4ontCa+k5rn0w5o9A=; b=R5iGlF2FKV6WHbkxqAvI91riF0vByFwesBCNu/tzWqYS/rorMAMEPQ7h6Bhnb2Fz9F +DR7B7o3eV0mYaFm9AdPXgj9rNmhld+4D2l7+7aFWwekdfXUT23FO/maGw85BelVMR4m cMYXkBbPSN0Y/6VdtGeejK6ihHhvfGCdcyf40/AmshXRDBNcSTJOW+xv4b0NdnIPU1n8 vhvKUwmiU0sOgrN86WD3XNeGr8n29EzvSOIol2G4M+zceIbeRk5CC8PlU+B+X/jy+9aq rTvvGEORz4toStep0qWBlqgabEAcJQdMkd7IkOmVROg67fpINIH+RilVYJptunSLCBX1 /ZVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=aH+qg+PE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id bh1-20020a056a02020100b005859c81f1f0si4632219pgb.137.2023.11.24.13.51.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Nov 2023 13:51:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=aH+qg+PE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id CCD0B802C68B; Fri, 24 Nov 2023 13:51:36 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231401AbjKXVvW (ORCPT + 99 others); Fri, 24 Nov 2023 16:51:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229557AbjKXVvR (ORCPT ); Fri, 24 Nov 2023 16:51:17 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 682951987 for ; Fri, 24 Nov 2023 13:51:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1700862683; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=Hgj8B8xMgHNPRV+C3WI4kW0phmnLrWnRPCMxmjhfjYA=; b=aH+qg+PEzeH0DCTcmutCW+e8mmXAV4HNWH46V3wEdZ00jYWEUVFfSA4K1IcJ9LRlNrDa8C IlIZuPzxCEgO3/0ujMDe6AUwJxXYbIpv+NqsPwCCedvNRmhv4mzG4W2WK0Ia40bzI1OSyq 6tJ+cN1/adEqz/mD7jn+k5a5nLktqho= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-372-NQ-g0QsfPie5Dl7zSx4g0A-1; Fri, 24 Nov 2023 16:51:19 -0500 X-MC-Unique: NQ-g0QsfPie5Dl7zSx4g0A-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 96E91812C28; Fri, 24 Nov 2023 21:51:18 +0000 (UTC) Received: from warthog.procyon.org.uk (unknown [10.42.28.161]) by smtp.corp.redhat.com (Postfix) with ESMTP id 939085028; Fri, 24 Nov 2023 21:51:17 +0000 (UTC) Organization: Red Hat UK Ltd. Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SI4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 3798903 From: David Howells To: Steve French cc: dhowells@redhat.com, Shyam Prasad N , Rohith Surabattula , Jeff Layton , linux-cifs@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] cifs: Set the file size after doing copychunk_range MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <1297338.1700862676.1@warthog.procyon.org.uk> Date: Fri, 24 Nov 2023 21:51:16 +0000 Message-ID: <1297339.1700862676@warthog.procyon.org.uk> X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.5 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 24 Nov 2023 13:51:36 -0800 (PST) Set i_size on the inode after doing the copychunk_range operation as this value may be used by various things internally. stat() hides the issue because setting ->time to 0 causes cifs_getatr() to revalidate the attributes. Also reduce the pagecache truncation to only invalidate the range of bytes that will be copied over otherwise we will discard dirty data that isn't inside the target range. Fixes: 620d8745b35d ("Introduce cifs_copy_file_range()") Signed-off-by: David Howells cc: Steve French cc: Shyam Prasad N cc: Rohith Surabattula cc: Jeff Layton cc: linux-cifs@vger.kernel.org --- fs/smb/client/cifsfs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/smb/client/cifsfs.c b/fs/smb/client/cifsfs.c index ea3a7a668b45..5a69e93c302e 100644 --- a/fs/smb/client/cifsfs.c +++ b/fs/smb/client/cifsfs.c @@ -1307,12 +1307,15 @@ ssize_t cifs_file_copychunk_range(unsigned int xid, goto unlock; /* should we flush first and last page first */ - truncate_inode_pages(&target_inode->i_data, 0); + truncate_inode_pages_range(&target_inode->i_data, destoff, len); rc = file_modified(dst_file); - if (!rc) + if (!rc) { rc = target_tcon->ses->server->ops->copychunk_range(xid, smb_file_src, smb_file_target, off, len, destoff); + if (rc > 0 && destoff + rc > i_size_read(target_inode)) + truncate_setsize(target_inode, destoff + rc); + } file_accessed(src_file);