<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/nfs/read.c, branch linux-3.17.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-06-25T23:01:27Z</updated>
<entry>
<title>nfs: get rid of duplicate dprintk</title>
<updated>2014-06-25T23:01:27Z</updated>
<author>
<name>Weston Andros Adamson</name>
</author>
<published>2014-06-25T14:12:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0446278999e5b622b309179ba392efcb5d8b8a46'/>
<id>urn:sha1:0446278999e5b622b309179ba392efcb5d8b8a46</id>
<content type='text'>
This was introduced by a merge error with my recent pgio patchset.

Signed-off-by: Weston Andros Adamson &lt;dros@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>nfs: merge nfs_pgio_data into _header</title>
<updated>2014-06-24T22:47:00Z</updated>
<author>
<name>Weston Andros Adamson</name>
</author>
<published>2014-06-09T15:48:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d45f60c67848b9f19160692581d78e5b4757a000'/>
<id>urn:sha1:d45f60c67848b9f19160692581d78e5b4757a000</id>
<content type='text'>
struct nfs_pgio_data only exists as a member of nfs_pgio_header, but is
passed around everywhere, because there used to be multiple _data structs
per _header. Many of these functions then use the _data to find a pointer
to the _header.  This patch cleans this up by merging the nfs_pgio_data
structure into nfs_pgio_header and passing nfs_pgio_header around instead.

Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Weston Andros Adamson &lt;dros@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>nfs: move nfs_pgio_data and remove nfs_rw_header</title>
<updated>2014-06-24T22:46:59Z</updated>
<author>
<name>Weston Andros Adamson</name>
</author>
<published>2014-06-09T15:48:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1e7f3a485922211b6e4a082ebc6bf05810b0b6ea'/>
<id>urn:sha1:1e7f3a485922211b6e4a082ebc6bf05810b0b6ea</id>
<content type='text'>
nfs_rw_header was used to allocate an nfs_pgio_header along with an
nfs_pgio_data, because a _header would need at least one _data.

Now there is only ever one nfs_pgio_data for each nfs_pgio_header -- move
it to nfs_pgio_header and get rid of nfs_rw_header.

Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Weston Andros Adamson &lt;dros@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>nfs: support page groups in nfs_read_completion</title>
<updated>2014-05-29T15:11:50Z</updated>
<author>
<name>Weston Andros Adamson</name>
</author>
<published>2014-05-15T15:56:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=68072992c8f6ace57fe80b6fb5d57b3ae887a09d'/>
<id>urn:sha1:68072992c8f6ace57fe80b6fb5d57b3ae887a09d</id>
<content type='text'>
nfs_read_completion relied on the fact that there was a 1:1 mapping
of page to nfs_request, but this has now changed.

Regions not covered by a request have already been zeroed elsewhere.

Signed-off-by: Weston Andros Adamson &lt;dros@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>nfs: page group syncing in read path</title>
<updated>2014-05-29T15:11:45Z</updated>
<author>
<name>Weston Andros Adamson</name>
</author>
<published>2014-05-15T15:56:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=67d0338edd71db9a4f406d8778f7c525d31e9f7f'/>
<id>urn:sha1:67d0338edd71db9a4f406d8778f7c525d31e9f7f</id>
<content type='text'>
Operations that modify state for a whole page must be syncronized across
all requests within a page group. In the read path, this is calling
unlock_page and SetPageUptodate. Both of these functions should not be
called until all requests in a page group have reached the point where
they would call them.

This patch should have no effect yet since all page groups currently
have one request, but will come into play when pg_test functions are
modified to split pages into sub-page regions.

Signed-off-by: Weston Andros Adamson &lt;dros@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>nfs: add support for multiple nfs reqs per page</title>
<updated>2014-05-29T15:11:44Z</updated>
<author>
<name>Weston Andros Adamson</name>
</author>
<published>2014-05-15T15:56:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2bfc6e566daa8386c9cffef2f7de17fc330d3835'/>
<id>urn:sha1:2bfc6e566daa8386c9cffef2f7de17fc330d3835</id>
<content type='text'>
Add "page groups" - a circular list of nfs requests (struct nfs_page)
that all reference the same page. This gives nfs read and write paths
the ability to account for sub-page regions independently.  This
somewhat follows the design of struct buffer_head's sub-page
accounting.

Only "head" requests are ever added/removed from the inode list in
the buffered write path. "head" and "sub" requests are treated the
same through the read path and the rest of the write/commit path.
Requests are given an extra reference across the life of the list.

Page groups are never rejoined after being split. If the read/write
request fails and the client falls back to another path (ie revert
to MDS in PNFS case), the already split requests are pushed through
the recoalescing code again, which may split them further and then
coalesce them into properly sized requests on the wire. Fragmentation
shouldn't be a problem with the current design, because we flush all
requests in page group when a non-contiguous request is added, so
the only time resplitting should occur is on a resend of a read or
write.

This patch lays the groundwork for sub-page splitting, but does not
actually do any splitting. For now all page groups have one request
as pg_test functions don't yet split pages. There are several related
patches that are needed support multiple requests per page group.

Signed-off-by: Weston Andros Adamson &lt;dros@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>nfs: remove unused arg from nfs_create_request</title>
<updated>2014-05-29T15:11:43Z</updated>
<author>
<name>Weston Andros Adamson</name>
</author>
<published>2014-05-15T15:56:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8c8f1ac109726e4ed44a920f5c962c84610d4a17'/>
<id>urn:sha1:8c8f1ac109726e4ed44a920f5c962c84610d4a17</id>
<content type='text'>
@inode is passed but not used.

Signed-off-by: Weston Andros Adamson &lt;dros@primarydata.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>NFS: Create a common nfs_pageio_ops struct</title>
<updated>2014-05-29T15:11:41Z</updated>
<author>
<name>Anna Schumaker</name>
</author>
<published>2014-05-06T13:12:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=41d8d5b7a559a9bfbf9680d1e4777e1a7b0149d5'/>
<id>urn:sha1:41d8d5b7a559a9bfbf9680d1e4777e1a7b0149d5</id>
<content type='text'>
At this point the read and write structures look identical, so combine
them into something shared by both.

Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>NFS: Create a common generic_pg_pgios()</title>
<updated>2014-05-29T15:11:41Z</updated>
<author>
<name>Anna Schumaker</name>
</author>
<published>2014-05-06T13:12:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cf485fcd68bc2dd91258e844ba4649404fff3235'/>
<id>urn:sha1:cf485fcd68bc2dd91258e844ba4649404fff3235</id>
<content type='text'>
What we have here is two functions that look identical.  Let's share
some more code!

Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
<entry>
<title>NFS: Create a common multiple_pgios() function</title>
<updated>2014-05-29T15:11:40Z</updated>
<author>
<name>Anna Schumaker</name>
</author>
<published>2014-05-06T13:12:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c3766276f26090f4459329839cdcc8506dfbced5'/>
<id>urn:sha1:c3766276f26090f4459329839cdcc8506dfbced5</id>
<content type='text'>
Once again, these two functions look identical in the read and write
case.  Time to combine them together!

Signed-off-by: Anna Schumaker &lt;Anna.Schumaker@Netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;trond.myklebust@primarydata.com&gt;
</content>
</entry>
</feed>
