<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/net/sunrpc, branch v2.6.25.6</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/net/sunrpc?h=v2.6.25.6</id>
<link rel='self' href='https://git.amat.us/linux/atom/net/sunrpc?h=v2.6.25.6'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2008-04-09T01:07:00Z</updated>
<entry>
<title>SUNRPC: Fix a memory leak in rpc_create()</title>
<updated>2008-04-09T01:07:00Z</updated>
<author>
<name>Chuck Lever</name>
<email>chuck.lever@oracle.com</email>
</author>
<published>2008-04-07T20:52:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ed13c27e546667fb0967ae30f5070cd7f6455f90'/>
<id>urn:sha1:ed13c27e546667fb0967ae30f5070cd7f6455f90</id>
<content type='text'>
Commit 510deb0d was supposed to move the xprt_create_transport() call in
rpc_create(), but neglected to remove the old call site.  This resulted in
a transport leak after every rpc_create() call.

This leak is present in 2.6.24 and 2.6.25.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>SUNRPC: don't call flush_dcache_page() with an invalid pointer</title>
<updated>2008-04-09T01:06:50Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2008-03-31T21:02:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=daeba89d43af0fa469d38a4ccdc32fff8ca17c2e'/>
<id>urn:sha1:daeba89d43af0fa469d38a4ccdc32fff8ca17c2e</id>
<content type='text'>
Fix a problem in _copy_to_pages(), whereby it may call flush_dcache_page()
with an invalid pointer due to the fact that 'pgto' gets incremented
beyond the end of the page array. Fix is to exit the loop without this
unnecessary increment of pgto.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>SVCRDMA: Check num_sge when setting LAST_CTXT bit</title>
<updated>2008-03-26T18:24:19Z</updated>
<author>
<name>Tom Tucker</name>
<email>tom@opengridcomputing.com</email>
</author>
<published>2008-03-26T02:27:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c8237a5fcea9d49a73275b4c8f541dd42f8da1a4'/>
<id>urn:sha1:c8237a5fcea9d49a73275b4c8f541dd42f8da1a4</id>
<content type='text'>
The RDMACTXT_F_LAST_CTXT bit was getting set incorrectly
when the last chunk in the read-list spanned multiple pages. This
resulted in a kernel panic when the wrong context was used to
build the RPC iovec page list.

RDMA_READ is used to fetch RPC data from the client for
NFS_WRITE requests. A scatter-gather is used to map the
advertised client side buffer to the server-side iovec and
associated page list.

WR contexts are used to convey which scatter-gather entries are
handled by each WR. When the write data is large, a single RPC may
require multiple RDMA_READ requests so the contexts for a single RPC
are chained together in a linked list. The last context in this list
is marked with a bit RDMACTXT_F_LAST_CTXT so that when this WR completes,
the CQ handler code can enqueue the RPC for processing.

The code in rdma_read_xdr was setting this bit on the last two
contexts on this list when the last read-list chunk spanned multiple
pages. This caused the svc_rdma_recvfrom logic to incorrectly build
the RPC and caused the kernel to crash because the second-to-last
context doesn't contain the iovec page list.

Modified the condition that sets this bit so that it correctly detects
the last context for the RPC.

Signed-off-by: Tom Tucker &lt;tom@opengridcomputing.com&gt;
Tested-by: Roland Dreier &lt;rolandd@cisco.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>SVCRDMA: Use only 1 RDMA read scatter entry for iWARP adapters</title>
<updated>2008-03-24T18:25:25Z</updated>
<author>
<name>Roland Dreier</name>
<email>rdreier@cisco.com</email>
</author>
<published>2008-03-24T16:03:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d3073779f8362d64b804882f5f41c208c4a5e11e'/>
<id>urn:sha1:d3073779f8362d64b804882f5f41c208c4a5e11e</id>
<content type='text'>
The iWARP protocol limits RDMA read requests to a single scatter
entry.  NFS/RDMA has code in rdma_read_max_sge() that is supposed to
limit the sge_count for RDMA read requests to 1, but the code to do
that is inside an #ifdef RDMA_TRANSPORT_IWARP block.  In the mainline
kernel at least, RDMA_TRANSPORT_IWARP is an enum and not a
preprocessor #define, so the #ifdef'ed code is never compiled.

In my test of a kernel build with -j8 on an NFS/RDMA mount, this
problem eventually leads to trouble starting with:

    svcrdma: Error posting send = -22
    svcrdma : RDMA_READ error = -22

and things go downhill from there.

The trivial fix is to delete the #ifdef guard.  The check seems to be
a remnant of when the NFS/RDMA code was not merged and needed to
compile against multiple kernel versions, although I don't think it
ever worked as intended.  In any case now that the code is upstream
there's no need to test whether the RDMA_TRANSPORT_IWARP constant is
defined or not.

Without this patch, my kernel build on an NFS/RDMA mount using NetEffect
adapters quickly and 100% reproducibly failed with an error like:

    ld: final link failed: Software caused connection abort

With the patch applied I was able to complete a kernel build on the
same setup.

(Tom Tucker says this is "actually an _ancient_ remnant when it had to
compile against iWARP vs. non-iWARP enabled OFA trees.")

Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
Acked-by: Tom Tucker &lt;tom@opengridcomputing.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6</title>
<updated>2008-03-18T06:44:31Z</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2008-03-18T06:44:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2f633928cbba8a5858bb39b11e7219a41b0fbef5'/>
<id>urn:sha1:2f633928cbba8a5858bb39b11e7219a41b0fbef5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[SUNRPC]: net/* NULL noise</title>
<updated>2008-03-18T05:48:03Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2008-03-18T05:48:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=27724426a9000086993a8107a11cff276c4bd4d4'/>
<id>urn:sha1:27724426a9000086993a8107a11cff276c4bd4d4</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[NET] endianness noise: INADDR_ANY</title>
<updated>2008-03-18T05:44:53Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2008-03-18T05:44:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e6f1cebf71c4e7aae7dfa43414ce2631291def9f'/>
<id>urn:sha1:e6f1cebf71c4e7aae7dfa43414ce2631291def9f</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>SVCRDMA: Fix erroneous BUG_ON in send_write</title>
<updated>2008-03-12T19:37:34Z</updated>
<author>
<name>Tom Tucker</name>
<email>tom@opengridcomputing.com</email>
</author>
<published>2008-03-11T18:31:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3fedb3c5a80595d94f7cbe47a6dba9184d869eb8'/>
<id>urn:sha1:3fedb3c5a80595d94f7cbe47a6dba9184d869eb8</id>
<content type='text'>
The assertion that checks for sge context overflow is
incorrectly hard-coded to 32. This causes a kernel bug
check when using big-data mounts. Changed the BUG_ON to
use the computed value RPCSVC_MAXPAGES.

Signed-off-by: Tom Tucker &lt;tom@opengridcomputing.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>SVCRDMA: Add xprt refs to fix close/unmount crash</title>
<updated>2008-03-12T19:37:34Z</updated>
<author>
<name>Tom Tucker</name>
<email>tom@opengridcomputing.com</email>
</author>
<published>2008-03-11T18:31:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c48cbb405c4f338ce3263c44d621eff41d9a95fc'/>
<id>urn:sha1:c48cbb405c4f338ce3263c44d621eff41d9a95fc</id>
<content type='text'>
RDMA connection shutdown on an SMP machine can cause a kernel crash due
to the transport close path racing with the I/O tasklet.

Additional transport references were added as follows:
- A reference when on the DTO Q to avoid having the transport
  deleted while queued for I/O.
- A reference while there is a QP able to generate events.
- A reference until the DISCONNECTED event is received on the CM ID

Signed-off-by: Tom Tucker &lt;tom@opengridcomputing.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'hotfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6</title>
<updated>2008-03-07T20:08:07Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@woody.linux-foundation.org</email>
</author>
<published>2008-03-07T20:08:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4c1aa6f8b9686ddc7221f0f3b63f9b7dd1467543'/>
<id>urn:sha1:4c1aa6f8b9686ddc7221f0f3b63f9b7dd1467543</id>
<content type='text'>
* 'hotfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
  NFS: Fix dentry revalidation for NFSv4 referrals and mountpoint crossings
  NFS: Fix the fsid revalidation in nfs_update_inode()
  SUNRPC: Fix a nfs4 over rdma transport oops
  NFS: Fix an f_mode/f_flags confusion in fs/nfs/write.c
</content>
</entry>
</feed>
