Skip to content
Snippets Groups Projects
Commit e12dbc3a authored by Eric Barton's avatar Eric Barton
Browse files

* 6241

     fixed bug in vibnal to do with mismatched RDMA fragments.  Manifest by
     lustre protocol errors when creating long symlinks so that the lustre
     request message size didn't fit in a vibnal immediate message (4K).

*    6010
     fix to prevent the LASSERT(0) in kqswnal_tx_done() if routing tables
     are set up incorrectly.
parent 734645ab
No related branches found
No related tags found
No related merge requests found
......@@ -1341,12 +1341,6 @@ kqswnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd)
if (nid == kqswnal_lib.libnal_ni.ni_pid.nid) /* gateway is me */
nid = fwd->kprfd_target_nid; /* target is final dest */
if (kqswnal_nid2elanid (nid) < 0) {
CERROR("Can't forward [%p] to "LPX64": not a peer\n", fwd, nid);
rc = -EHOSTUNREACH;
goto out;
}
/* copy hdr into pre-mapped buffer */
memcpy(ktx->ktx_buffer, fwd->kprfd_hdr, sizeof(ptl_hdr_t));
......@@ -1357,6 +1351,12 @@ kqswnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd)
ktx->ktx_args[0] = fwd;
ktx->ktx_nfrag = ktx->ktx_firsttmpfrag = 1;
if (kqswnal_nid2elanid (nid) < 0) {
CERROR("Can't forward [%p] to "LPX64": not a peer\n", fwd, nid);
rc = -EHOSTUNREACH;
goto out;
}
if (nob <= KQSW_TX_MAXCONTIG)
{
/* send payload from ktx's pre-mapped contiguous buffer */
......
......@@ -1179,7 +1179,7 @@ kibnal_init_rdma (kib_tx_t *tx, int type, int nob,
resid -= wrknob;
if (wrknob < srcfrag->rf_nob) {
kibnal_rf_set(srcfrag,
kibnal_rf_addr(srcfrag) + resid,
kibnal_rf_addr(srcfrag) + wrknob,
srcfrag->rf_nob - wrknob);
} else {
srcfrag++;
......@@ -1188,7 +1188,7 @@ kibnal_init_rdma (kib_tx_t *tx, int type, int nob,
if (wrknob < dstfrag->rf_nob) {
kibnal_rf_set(dstfrag,
kibnal_rf_addr(dstfrag) + resid,
kibnal_rf_addr(dstfrag) + wrknob,
dstfrag->rf_nob - wrknob);
} else {
dstfrag++;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment