Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp4424283ybl; Mon, 26 Aug 2019 10:12:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqzSNDAvmMOKjJvCI4ZsxE+Gj1Gu/sUnPZAa0hmhAFtbgB7InTGkD/+PRu3xtEBqsw8xxa/M X-Received: by 2002:a63:2c8:: with SMTP id 191mr17074786pgc.139.1566839574919; Mon, 26 Aug 2019 10:12:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566839574; cv=none; d=google.com; s=arc-20160816; b=YrLjZ82xB1EBWpbjtsmldIIaLUB1mPl8a4+h4ozWBxgmy4q5qjwGUxb8uqskEsK1wp x+ihPa9WOr+gfLRtqBoCbpmw1zvv49CWvCN2PWVakqmg6TiHpmAhWQzJsemvuWvPSyzu 1fg1UIDGlSZO4yuvCOV3m7Kh7W2+NAEZ5l7gb5T99/nKD8ZXy5ZZvv14nkTgy+feg1Yw 4q+WijCFoaWKWM/ra7k9CtM7XJ7dWRDk6WJljO1tfLAbj+LFyY3cxf1vCaJI9H4JNNZd awC6oKWOFE5477u5wlir9TjAch8QPJgOFCI9wok4REfDFebfb3LtBPKR+rphaBqctxUd 245Q== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=80Al+gPyf17RIcKd3EsMoWiHol5eOjBr2dyL/pe1OPE=; b=Lp2psGWf/tjSN2BEjE+4K27Ye0oHJh1tGiH/Lsm3GY/LecGiM0Y8NqOQbiAwgqWaf4 pZZuGxuX6zpbXWFUfBbxyT+Vka1eOdHo7y9cZYwGK77Dyjlh4f9GddbBy0x1hO3hWMLC jUSHWbfylx4umHGpLYaWfEKn0DB8fO2LsrPh1tpWw50wZ8yV1tnWnV6b3IrzWRG9yraM C8tUxDaCdeEjRHgtPb58cCy70U3w5kPJr3wHL4UrvApiBnF9Vn9umsuQG1Ra17EyP+Yv eXt+vOYiIPZGFEDkjH/3qr/A/0vE2ZjqRdvxzxvcaah5pAR7F/k0ZH05R5KivsYKDXqg 1Csg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="K31/1biW"; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id l5si53421pjt.106.2019.08.26.10.12.40; Mon, 26 Aug 2019 10:12:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-nfs-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=@gmail.com header.s=20161025 header.b="K31/1biW"; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 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 S1730170AbfHZRGj (ORCPT + 99 others); Mon, 26 Aug 2019 13:06:39 -0400 Received: from mail-io1-f52.google.com ([209.85.166.52]:44227 "EHLO mail-io1-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727815AbfHZRGj (ORCPT ); Mon, 26 Aug 2019 13:06:39 -0400 Received: by mail-io1-f52.google.com with SMTP id j4so30683942iog.11 for ; Mon, 26 Aug 2019 10:06:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=80Al+gPyf17RIcKd3EsMoWiHol5eOjBr2dyL/pe1OPE=; b=K31/1biWcx7+MbAVUBMEZIpt8fkRy/95rD9al0AErZgYgpzEQQXsqOQiHPHLG6iUUZ sF6CgLfbZri/e85Kx63RkiIt46N8tV2y9PQ9uOOJkWzjQHnu5C/Ah7KSfsdfEYx4/Hs9 Miv2gv++B7lGhqje5KeR5MRaUaIm1iq5aDsOPdDW1tOxAQNEQ7bXfYGFRUSV+5MNFo6J onlVsVuHy4c3SDX/6/WNTEVKVMo9UasBhENxsWLn0K84Ot/2SAtiBbJw3XLvcsR79v6t VxIGHF1J2wvrlNeV6ZBl6CK0q0y129bZHm3OiMEovdvFzoAaZvZ8hzeKJrYkIoXtOVn0 Yx4Q== 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:mime-version :content-transfer-encoding; bh=80Al+gPyf17RIcKd3EsMoWiHol5eOjBr2dyL/pe1OPE=; b=XmxaRpB7fyQHs7ApiKILd5Lzuz/LPRgrWYZwB5I416+0LLO7FlmzXmW2a9YUfWKwXH bjLfG60rnda4tECEFESBaddNZ7WtRZRgM5RgjbZjWp4Xg2T/bzm/HqyIH5flazZlRZz/ RlNRfVEf42QsfQO9ZQJV1QH4/WTjAnq64tvEmyQ0gmx6tzqIeq7vDr4NIDsecuCRGcvn cIRGZPyYNhbNyEDIvcPAEhb1UqWMVuhuZR/Oy2KgZoUGGNQ7rtgnyF8HzC+TfGo9x5Qg 5AkUZBGvsOC4v8QNVekwi20AJYUyrfyBuHRL7lw9DZR0gqXEzNGXBkRVxluhL0ctr8Oe /gVA== X-Gm-Message-State: APjAAAVMCrGlo1lY2MAxn1MblR5Y0eQ/tEQXDz4H5stVbVv7GTUyEzwU XUhCFhq9DSF7sqRnsUYjOzrUZsl0iQ== X-Received: by 2002:a02:9988:: with SMTP id a8mr19125625jal.127.1566839198421; Mon, 26 Aug 2019 10:06:38 -0700 (PDT) Received: from localhost.localdomain (c-68-40-189-247.hsd1.mi.comcast.net. [68.40.189.247]) by smtp.gmail.com with ESMTPSA id c3sm19303643iot.42.2019.08.26.10.06.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Aug 2019 10:06:37 -0700 (PDT) From: Trond Myklebust X-Google-Original-From: Trond Myklebust To: "J. Bruce Fields" Cc: linux-nfs@vger.kernel.org Subject: [PATCH 0/1] Clean up and fix NFS server handling of eof Date: Mon, 26 Aug 2019 13:03:10 -0400 Message-Id: <20190826170311.81482-1-trond.myklebust@hammerspace.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Currently, the knfsd server assumes that a short read indicates and end of file. That assumption is incorrect. The short read means that either we've hit the end of file, or we've hit a read error. In the case of a read error, the client may want to retry (as per the implementation recommendations in RFC1813, and RFC7530), but currently it is being told that it hit an eof. The following patch cleans up read, and fixes the eof reporting to the two following cases: 1) read() returns a zero length short read with no error. 2) the offset+length of the read is >= the file size. Trond Myklebust (1): nfsd: Clean up nfs read eof detection fs/nfsd/nfs3proc.c | 9 ++------- fs/nfsd/nfs4xdr.c | 11 +++-------- fs/nfsd/nfsproc.c | 4 +++- fs/nfsd/vfs.c | 37 ++++++++++++++++++++++++++----------- fs/nfsd/vfs.h | 28 ++++++---------------------- fs/nfsd/xdr3.h | 2 +- 6 files changed, 41 insertions(+), 50 deletions(-) -- 2.21.0