<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/nfs/read.c, branch linux-5.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2021-11-02T20:44:02Z</updated>
<entry>
<title>NFS: Add offset to nfs_aop_readahead tracepoint</title>
<updated>2021-11-02T20:44:02Z</updated>
<author>
<name>Dave Wysochanski</name>
</author>
<published>2021-11-02T19:51:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=edfa0b16bf9eb1e2c93e7e846e0e02c51395ca7b'/>
<id>urn:sha1:edfa0b16bf9eb1e2c93e7e846e0e02c51395ca7b</id>
<content type='text'>
Add the byte offset of the readahead request to the tracepoint output
so we know where the read starts.

Before this patch:
cat-8104    [002] .....   813.168775: nfs_aop_readahead: fileid=00:31:141 fhandle=0xe55807f6 version=1756509392533525500 nr_pages=256
cat-8104    [002] .....   813.174973: nfs_aop_readahead_done: fileid=00:31:141 fhandle=0xe55807f6 version=1756509392533525500 nr_pages=256 ret=0
cat-8104    [002] .....   813.175963: nfs_aop_readahead: fileid=00:31:141 fhandle=0xe55807f6 version=1756509392533525500 nr_pages=256
cat-8104    [002] .....   813.183742: nfs_aop_readahead_done: fileid=00:31:141 fhandle=0xe55807f6 version=1756509392533525500 nr_pages=1 ret=0

After this patch:
cat-6392    [001] .....    73.107782: nfs_aop_readahead: fileid=00:31:141 fhandle=0xed22403f version=1756511950029502774 offset=5242880 nr_pages=256
cat-6392    [001] .....    73.112466: nfs_aop_readahead_done: fileid=00:31:141 fhandle=0xed22403f version=1756511950029502774 nr_pages=256 ret=0
cat-6392    [001] .....    73.115692: nfs_aop_readahead: fileid=00:31:141 fhandle=0xed22403f version=1756511950029502774 offset=6291456 nr_pages=256
cat-6392    [001] .....    73.123283: nfs_aop_readahead_done: fileid=00:31:141 fhandle=0xed22403f version=1756511950029502774 nr_pages=256 ret=0

Signed-off-by: Dave Wysochanski &lt;dwysocha@redhat.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: Replace dprintk callsites in nfs_readpage(s)</title>
<updated>2021-10-20T22:09:54Z</updated>
<author>
<name>Chuck Lever</name>
</author>
<published>2021-10-16T22:02:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d9f877433ef8ba2a79d2abd921ddaf2d301e24bb'/>
<id>urn:sha1:d9f877433ef8ba2a79d2abd921ddaf2d301e24bb</id>
<content type='text'>
These new events report slightly different information for readpage
and readpages/readahead.

For readpage:
             fsx-1387  [006]   380.761896: nfs_aop_readpage:    fileid=00:28:2 fhandle=0x36fbbe51 version=1752899355910932437 offset=131072
             fsx-1387  [006]   380.761900: nfs_aop_readpage_done: fileid=00:28:2 fhandle=0x36fbbe51 version=1752899355910932437 offset=131072 ret=0

The index of a synchronous single-page read is reported.

For readpages:

             fsx-1387  [006]   380.760847: nfs_aop_readahead:   fileid=00:28:2 fhandle=0x36fbbe51 version=1752899355909932456 nr_pages=3
             fsx-1387  [006]   380.760853: nfs_aop_readahead_done: fileid=00:28:2 fhandle=0x36fbbe51 version=1752899355909932456 nr_pages=3 ret=0

The count of pages requested is reported. nfs_readpages does not
wait for the READ requests to complete.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: Always provide aligned buffers to the RPC read layers</title>
<updated>2021-08-30T17:21:38Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2021-08-27T18:00:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8cfb9015280d49f9d92d5b0f88cedf5f0856c0fd'/>
<id>urn:sha1:8cfb9015280d49f9d92d5b0f88cedf5f0856c0fd</id>
<content type='text'>
Instead of messing around with XDR padding in the RDMA layer, we should
just give the RPC layer an aligned buffer. Try to avoid creating extra
RPC calls by aligning to the smaller value of ALIGN(len, rsize) and
PAGE_SIZE.

Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Fix fscache read from NFS after cache error</title>
<updated>2021-07-08T18:03:26Z</updated>
<author>
<name>Dave Wysochanski</name>
</author>
<published>2021-06-29T17:13:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ba512c1bc3232124567a59a3995c773dc79716e8'/>
<id>urn:sha1:ba512c1bc3232124567a59a3995c773dc79716e8</id>
<content type='text'>
Earlier commits refactored some NFS read code and removed
nfs_readpage_async(), but neglected to properly fixup
nfs_readpage_from_fscache_complete().  The code path is
only hit when something unusual occurs with the cachefiles
backing filesystem, such as an IO error or while a cookie
is being invalidated.

Mark page with PG_checked if fscache IO completes in error,
unlock the page, and let the VM decide to re-issue based on
PG_uptodate.  When the VM reissues the readpage, PG_checked
allows us to skip over fscache and read from the server.

Link: https://marc.info/?l=linux-nfs&amp;m=162498209518739
Fixes: 1e83b173b266 ("NFS: Add nfs_pageio_complete_read() and remove nfs_readpage_async()")
Signed-off-by: Dave Wysochanski &lt;dwysocha@redhat.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: Ensure nfs_readpage returns promptly when internal error occurs</title>
<updated>2021-07-08T18:03:26Z</updated>
<author>
<name>Dave Wysochanski</name>
</author>
<published>2021-06-29T09:11:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e0340f16a08d031de54ed91d26f57c9a966a776a'/>
<id>urn:sha1:e0340f16a08d031de54ed91d26f57c9a966a776a</id>
<content type='text'>
A previous refactoring of nfs_readpage() might end up calling
wait_on_page_locked_killable() even if readpage_async_filler() failed
with an internal error and pg_error was non-zero (for example, if
nfs_create_request() failed).  In the case of an internal error,
skip over wait_on_page_locked_killable() as this is only needed
when the read is sent and an error occurs during completion handling.

Signed-off-by: Dave Wysochanski &lt;dwysocha@redhat.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: Remove unnecessary inode parameter from nfs_pageio_complete_read()</title>
<updated>2021-06-28T13:34:39Z</updated>
<author>
<name>Dave Wysochanski</name>
</author>
<published>2021-06-24T15:34:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b42ad64f5f216db05310783cbded56176c3a09df'/>
<id>urn:sha1:b42ad64f5f216db05310783cbded56176c3a09df</id>
<content type='text'>
Simplify nfs_pageio_complete_read() by using the inode pointer saved
inside nfs_pageio_descriptor.

Signed-off-by: Dave Wysochanski &lt;dwysocha@redhat.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@hammerspace.com&gt;
</content>
</entry>
<entry>
<title>NFS: Add nfs_pageio_complete_read() and remove nfs_readpage_async()</title>
<updated>2021-02-01T18:32:48Z</updated>
<author>
<name>Dave Wysochanski</name>
</author>
<published>2021-01-28T14:55:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1e83b173b2663b7d357309584678cf24787f0713'/>
<id>urn:sha1:1e83b173b2663b7d357309584678cf24787f0713</id>
<content type='text'>
Add nfs_pageio_complete_read() and call this from both nfs_readpage()
and nfs_readpages(), since the submission and accounting is the same
for both functions.

Signed-off-by: Dave Wysochanski &lt;dwysocha@redhat.com&gt;
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Call readpage_async_filler() from nfs_readpage_async()</title>
<updated>2021-02-01T18:32:48Z</updated>
<author>
<name>Dave Wysochanski</name>
</author>
<published>2021-01-28T14:55:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0c119e3a18f994251c74c751e1657e4ef8da0c00'/>
<id>urn:sha1:0c119e3a18f994251c74c751e1657e4ef8da0c00</id>
<content type='text'>
Refactor slightly so nfs_readpage_async() calls into
readpage_async_filler().

Signed-off-by: Dave Wysochanski &lt;dwysocha@redhat.com&gt;
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: Refactor nfs_readpage() and nfs_readpage_async() to use nfs_readdesc</title>
<updated>2021-02-01T18:32:48Z</updated>
<author>
<name>Dave Wysochanski</name>
</author>
<published>2021-01-28T14:55:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1af7e7f8c12f521c111bd7cf0d138be7e15b51a5'/>
<id>urn:sha1:1af7e7f8c12f521c111bd7cf0d138be7e15b51a5</id>
<content type='text'>
Both nfs_readpage() and nfs_readpages() use similar code.
This patch should be no functional change, and refactors
nfs_readpage_async() to use nfs_readdesc to enable future
merging of nfs_readpage_async() and nfs_readpage_async_filler().

Signed-off-by: Dave Wysochanski &lt;dwysocha@redhat.com&gt;
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: In nfs_readpage() only increment NFSIOS_READPAGES when read succeeds</title>
<updated>2021-02-01T18:32:48Z</updated>
<author>
<name>Dave Wysochanski</name>
</author>
<published>2021-01-28T14:55:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6ddfd213f4ea22ac955bcd82100c57cd294494d2'/>
<id>urn:sha1:6ddfd213f4ea22ac955bcd82100c57cd294494d2</id>
<content type='text'>
There is a small inconsistency with nfs_readpage() vs nfs_readpages() with
regards to NFSIOS_READPAGES.  In readpage we unconditionally increment
NFSIOS_READPAGES at the top, which means even if the read fails.  In
readpages, we increment NFSIOS_READPAGES at the bottom based on how
many pages were successfully read.  Change readpage to be consistent with
readpages and so NFSIOS_READPAGES only reflects successful, non-fscache
reads.

Signed-off-by: Dave Wysochanski &lt;dwysocha@redhat.com&gt;
Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
</content>
</entry>
</feed>
