From e12dbc3a115e707de8919fdd688d6f18ab9ad548 Mon Sep 17 00:00:00 2001 From: eeb <eeb> Date: Tue, 3 May 2005 15:58:06 +0000 Subject: [PATCH] * 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. --- lnet/klnds/qswlnd/qswlnd_cb.c | 12 ++++++------ lnet/klnds/viblnd/viblnd_cb.c | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lnet/klnds/qswlnd/qswlnd_cb.c b/lnet/klnds/qswlnd/qswlnd_cb.c index 94c671dad2..22e2cd90a8 100644 --- a/lnet/klnds/qswlnd/qswlnd_cb.c +++ b/lnet/klnds/qswlnd/qswlnd_cb.c @@ -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 */ diff --git a/lnet/klnds/viblnd/viblnd_cb.c b/lnet/klnds/viblnd/viblnd_cb.c index 83ea106fb5..8a9c8a43a9 100644 --- a/lnet/klnds/viblnd/viblnd_cb.c +++ b/lnet/klnds/viblnd/viblnd_cb.c @@ -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++; -- GitLab