Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp3717481pxb; Mon, 9 Nov 2020 20:19:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJxmjdiNxkc8tlcGxxgD7I9UT2ddokaLM2tNRRMxo0OY4YTKRD+K3Lv47ISjFF1Hh1+eMsV7 X-Received: by 2002:a17:906:86c7:: with SMTP id j7mr18051017ejy.301.1604981968838; Mon, 09 Nov 2020 20:19:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604981968; cv=none; d=google.com; s=arc-20160816; b=BuxPpMJhk6HAxNu8HZ357NapKN2gtXOGgE9QzTp9RDqDd9Mv3l/RSKtLQoorEa/CHD vR60vnqSKQ+pwgRif25IpJBTPr/mOMjFl7Mt5IabeWUJ1GP5QpbZX3JjXx6StKM7ORTJ qCr0D4+Ku10Zglxs0VrNxtCd9OlolGplqVI5hXRC9En039X5hFf6+Us6y30y5F6n89mw ocgB0o/1i2pVVFVbxv//WgNfFA3QmInTuwFKoBr3yHLzShmHt7rS/rtiXriVnfGOGnLu QFeTe6vuwBbExjDmRITF5OMKeLAQr5Q3e8PTRBys8x5oMDifj9/9yga+p8b0rti25Dbn 1bwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:mime-version:message-id :subject:cc:to:from:date:dkim-signature; bh=v1Sc4PjPGpot7NoATWAYOOjbPzYoqv7HnG/nSNu682I=; b=tZNM1GRNkmkAQ4EZy0bkEujmCVLUJfJhg1ny1UA532twNPSmjGNfXtoh7Y4EHS2QXj b4aVC260IvNEphDRHz576pxX7Bjl6T5qa0WVAVnGyQj0bjwP4vuoRT3jx36V6iTOPSg7 I73rDxE7WYztmPPiNWRxAqiRzW5vrqDBuyPCnY/C0XVpMedwZ1Tab073qSQtKRmUohWx ISUjLwIef4hjjooXrfL+srIS+ucVXzV5hdgp1/0sYkwcxi2wU0ZJKjuYLx68nZ6gp9Nc EsZ5dTpS/On4t4IFikvn1TV355/gfA5XEv2tF2IY2I5IgJT1hfWnZyv2k7BwSe9GksYf 4DQA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Qjbs99cu; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x3si10162065ejv.461.2020.11.09.20.18.54; Mon, 09 Nov 2020 20:19:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-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=@gmail.com header.s=20161025 header.b=Qjbs99cu; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729336AbgKJESx (ORCPT + 99 others); Mon, 9 Nov 2020 23:18:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729243AbgKJESx (ORCPT ); Mon, 9 Nov 2020 23:18:53 -0500 Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 73E8CC0613CF for ; Mon, 9 Nov 2020 20:18:53 -0800 (PST) Received: by mail-pg1-x52f.google.com with SMTP id f38so9062085pgm.2 for ; Mon, 09 Nov 2020 20:18:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mime-version:content-disposition; bh=v1Sc4PjPGpot7NoATWAYOOjbPzYoqv7HnG/nSNu682I=; b=Qjbs99cu8XA02OyTHfK9fsD4JPargyw6WgNGJKhdoiQ4wsrtyrityQN/k18cNolY9I BGcCefSI0zfrZ/Hqm2PpE9IjLjttmNEA2EGEMx/qU/yCraN2eYz+H5s3Buz8AlEiVq9d ut2L3wNA6c4mCOdYy08ojT633EV0NaZo5x7IKDCR1rPmaSOHb/NGgxwYkjOh4gsO2DpO Yqk25HXPzo/OXnNYabAcA2DUpXujA00uHdl5frk73olk6SZ6y2Iop8CmUQWYFeaGItcv PCKPQibO1cVlPcc7F306Vh5BDObwrnX/yBRbu5V7s7e04PzqKl209Z5/QhbsAKVTSlDF 3KVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition; bh=v1Sc4PjPGpot7NoATWAYOOjbPzYoqv7HnG/nSNu682I=; b=YiTIwNl2jQsXlr4I+9bQkDhV+CQgwXw9oXkU2EmEqo5E78+mHtY5P6u8a2Y9JWBfNY AGuhI3Uvkkp5+A2zsZnghRNwXt2aV4OZO45X1x2073b7F+yu5UVNZlT+g74AXUKWtZOe mjWmy58kfdpHooBzGR51PMV+sJsNA7wGYMn9j0RuHPE5yQfOzfSRanOmKl9jv+g++nND 7plBu2sUrJ4/AFAEouyWXFIRP7YS7wBgs045niQPw2CphP4SEEOLU5WhP7ydHBUZchnD V8PYkSo1jP1l/9qDzI9QQJatV7xvfCddxdNmG5MxWoLQ9J9++bzTnth8eT8kBBVPO5a5 9mgw== X-Gm-Message-State: AOAM533gWDWalC6LXMDfBTwfOd2ZBwSvF9qwMoHap1Ocs3j6eg45DJx7 ANqwWn4kVllnSBUtgr0QgCRmUqqBP9s= X-Received: by 2002:a63:fc5f:: with SMTP id r31mr15344590pgk.90.1604981932899; Mon, 09 Nov 2020 20:18:52 -0800 (PST) Received: from localhost ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id k17sm1118543pji.50.2020.11.09.20.18.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Nov 2020 20:18:52 -0800 (PST) Date: Tue, 10 Nov 2020 12:18:45 +0800 From: Murphy Zhou To: "J. Bruce Fields" , Chuck Lever , Anna Schumaker Cc: linux-nfs@vger.kernel.org, ltp@lists.linux.it Subject: Last NFSD update breaks nfsv4.2 copy_file_range Message-ID: <20201110041845.ag2kj3l6l6263ri5@xzhoux.usersys.redhat.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="gntlxg3aq5x7mobf" Content-Disposition: inline Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org --gntlxg3aq5x7mobf Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, copy_file_range for NFSv4.2 is broke by this commit 9f0b5792f07d8f0745c3620d577d6930ff2a96fd Author: Anna Schumaker Date: Mon Sep 28 13:09:01 2020 -0400 NFSD: Encode a full READ_PLUS reply LTP copy_file_range01 repeats this failure: copy_file_range01.c:144: TFAIL: file contents do not match Revert this commit then the failure gone. Attached simplified reproducer for your ref. -- Murphy --gntlxg3aq5x7mobf Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="copy_file_range.c" #define _GNU_SOURCE #include #include #include #include #include #include int main(int argc, char **argv) { int fd_in, fd_out; struct stat stat; loff_t len; ssize_t ret; char buf[2]; loff_t in = 0, out, i2, o2, to_cp, copied; if (argc != 6) { fprintf(stderr, "Usage: %s inoff outoff len\n", argv[0]); exit(EXIT_FAILURE); } fd_in = open(argv[1], O_RDONLY); if (fd_in == -1) { perror("open (argv[1])"); exit(EXIT_FAILURE); } fd_out = open(argv[2], O_CREAT|O_WRONLY|O_TRUNC|O_SYNC, 0644); if (fd_out == -1) { perror("open (argv[2])"); exit(EXIT_FAILURE); } in = strtoul(argv[3], NULL, 0); out = strtoul(argv[4], NULL, 0); len = strtoul(argv[5], NULL, 0); i2 = in; o2 = out; to_cp = len; do { ret = copy_file_range(fd_in, &in, fd_out, &out, to_cp, 0); if (ret == -1) { perror("copy_file_range"); exit(EXIT_FAILURE); } copied += ret; to_cp -= ret; } while (to_cp > 0 && ret > 0); close(fd_in); close(fd_out); sync(); FILE *fp1, *fp2; int ch1, ch2, count = 0; fp1 = fopen(argv[1], "r"); if (fseek(fp1, i2, SEEK_SET)) { perror("fseek fp1"); exit(EXIT_FAILURE); } fp2 = fopen(argv[2], "r"); if (fseek(fp2, o2, SEEK_SET)) { perror("fseek fp2"); exit(EXIT_FAILURE); } do { ch1 = fgetc(fp1); ch2 = fgetc(fp2); count++; } while ((count < len) && (ch1 == ch2)); fclose(fp1); fclose(fp2); if (ch1 != ch2) { printf("%d %d %d copied %d ch1 %c ch2 %c count %d file content corrupted\n", i2, o2, len, copied, ch1, ch2, count); return 1; } return 0; } --gntlxg3aq5x7mobf Content-Type: application/x-sh Content-Disposition: attachment; filename="nfs_copy_range.sh" Content-Transfer-Encoding: quoted-printable #!/bin/bash=0Amkdir -p /nfsexport /nfsmnt=0Acp /etc/exports{,.back}=0Acat >= /etc/exports < 1=0A echo AB= CDEFGHIJKLMNOPQRSTUVWXYZ12345 > 2=0A sync=0A /root/cfr 1 2 $i $j $k=0A = done=0A done=0Adone=0Acd=0Aumount /nfsmnt=0Asystemctl stop nfs-server=0Arm= -f test.img=0A --gntlxg3aq5x7mobf--