From nobody Fri May 10 01:35:55 2024 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4VbBKm0HT8z5KVM5; Fri, 10 May 2024 01:35:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4VbBKl6tCNz4NhS; Fri, 10 May 2024 01:35:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1715304956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AAWJUN2w3xmfsSA3+bHKLd0kK/NoTD609/uAo61DCCw=; b=hESGMZeZ9Lfbz5vuQ5btcU0M+Y5Bi7BMMNe9Ab2lYGgxAFTN74WxAfolLYEOVUgFRdSGFa 9XUepl+O0DCNXTBQtzinaOuCq5Yo8kQXodP3N0/tESQd59z13Ktao0CMfoelcuIf28F4gt /MSU4Dau9gmZ7tBmmnq/Hj4rtpHYrTsNwgfojpMJwk1fDckd3a7LkW1vLrsyuHSTAxVUFK BLSF1DuYxj4Km+DdYVsESS8nyNPIjkBOmcCfxERTNu4pNr8amXFjXUiPM9nNyJzGqocT6J 2oPzR9hkZLcOkCgcU37Rd9yH0tsjlR+eqQgOWsFRtuc0MunlTH5yiz7mx46Fzg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1715304956; a=rsa-sha256; cv=none; b=e3JOXPMGKlze72uk1DhjFNboLVlUe/Dcd2F24gBONxJSjiOW2BcGWSmWyLKlK7IvA/ribO 7VYlBBbqHGrS56iiMVapSBYmdHCj2RvZXSrx8P0gbmpoKrpzpIuodfUL/d74/1PV7p5f75 6g65DQt/nSCOyHOpuNTUWrzXXYL5KZwsl1eJ7Nbfrt0a9YEKEwSSzRzBCKCwmUFv20nXzg B+0eM+UGvgx8xvt0xtxRZlSLMRRn0MgB8rO2/6HZ4HmEHlN8ulYJU8s3YRj56V4UScDwrM 8OjyAzXn4ZZ/QCbxcFnURTj2QThB9YYagzkQJlKD6oJKfmexfN7pwUc5FdGS6w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1715304956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AAWJUN2w3xmfsSA3+bHKLd0kK/NoTD609/uAo61DCCw=; b=s6RHS/8lhfsOIl3+e/iAiyb6VOytthxyt5XZwrf/rYfehd+1DwFNKWDu3LJx3eoiplqdcY niuGbU06jKKVyzODquGNKK1a756LyelZ3nios7AWpy1onV3Ys+DV+khB8xQ2y6EotDRZsU ukOE7qSQcRjYmc5kw4DbnhXvnUQcHNyb1cQ3ElOUkgbUgOAOVkCsvxp6nbnKIYdGr2+AsJ ZaLYWrPqXj9VQ+FtW5GFEgXDY1sc/7lSHMoTuxrQHvqjSKffaHejyORyFsgeAixM1ZlIzj IXhz9mmpi9rj33RSSq8dYfAwUIJ7mizFU5gz/G54JLkUs4TKe620g0ePW0EGqA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4VbBKl6T0qzHJh; Fri, 10 May 2024 01:35:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 44A1ZtqP083895; Fri, 10 May 2024 01:35:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 44A1ZtJD083892; Fri, 10 May 2024 01:35:55 GMT (envelope-from git) Date: Fri, 10 May 2024 01:35:55 GMT Message-Id: <202405100135.44A1ZtJD083892@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: fbe965591f8a - main - nfscl: Do not do readahead for directories List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fbe965591f8a0a32c805a279a2505d4c20d22d26 Auto-Submitted: auto-generated The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=fbe965591f8a0a32c805a279a2505d4c20d22d26 commit fbe965591f8a0a32c805a279a2505d4c20d22d26 Author: Rick Macklem AuthorDate: 2024-05-10 01:33:13 +0000 Commit: Rick Macklem CommitDate: 2024-05-10 01:35:10 +0000 nfscl: Do not do readahead for directories For a very long time, the NFS client has done readahead for directory blocks. Unlike data blocks, the readahead cannot begin until the Readdir RPC reply has been received, since the directory offset cookie in that Readdir RPC reply is needed. As such, the readahead is serialized and does not seem to provide any real benefit. Recent testing/benchmarking shows that removing this readahead code for Readdir does not have a negative impact on performance. Therefore, this patch deletes the readahead code for Readdir, which simplifies the code and may make future changes simpler. MFC after: 1 month --- sys/fs/nfsclient/nfs_clbio.c | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c index c691e797aa01..ed7149c27903 100644 --- a/sys/fs/nfsclient/nfs_clbio.c +++ b/sys/fs/nfsclient/nfs_clbio.c @@ -679,36 +679,6 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) goto out; } - /* - * If not eof and read aheads are enabled, start one. - * (You need the current block first, so that you have the - * directory offset cookie of the next block.) - */ - NFSLOCKNODE(np); - if (nmp->nm_readahead > 0 && ncl_bioread_dora(vp) && - (bp->b_flags & B_INVAL) == 0 && - (np->n_direofoffset == 0 || - (lbn + 1) * NFS_DIRBLKSIZ < np->n_direofoffset) && - incore(&vp->v_bufobj, lbn + 1) == NULL) { - NFSUNLOCKNODE(np); - rabp = nfs_getcacheblk(vp, lbn + 1, NFS_DIRBLKSIZ, td); - if (rabp) { - if ((rabp->b_flags & (B_CACHE|B_DELWRI)) == 0) { - rabp->b_flags |= B_ASYNC; - rabp->b_iocmd = BIO_READ; - vfs_busy_pages(rabp, 0); - if (ncl_asyncio(nmp, rabp, cred, td)) { - rabp->b_flags |= B_INVAL; - rabp->b_ioflags |= BIO_ERROR; - vfs_unbusy_pages(rabp); - brelse(rabp); - } - } else { - brelse(rabp); - } - } - NFSLOCKNODE(np); - } /* * Unlike VREG files, whos buffer size ( bp->b_bcount ) is * chopped for the EOF condition, we cannot tell how large @@ -721,6 +691,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) * in np->n_direofoffset and chop it off as an extra step * right here. */ + NFSLOCKNODE(np); n = lmin(uio->uio_resid, NFS_DIRBLKSIZ - bp->b_resid - on); if (np->n_direofoffset && n > np->n_direofoffset - uio->uio_offset) n = np->n_direofoffset - uio->uio_offset;