X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Fklnds%2Fgnilnd%2Fgnilnd_cb.c;h=b8f56f57b9c23478373a6c119de03536ca57f0ef;hp=de84a5b78b32a0bb682d9fe36090a41ad68f11d5;hb=a12e5832df9338edbd37f239ce77b487933a1007;hpb=c6b0d0e779c18809d1ef9a6e352349107c7e68d8 diff --git a/lnet/klnds/gnilnd/gnilnd_cb.c b/lnet/klnds/gnilnd/gnilnd_cb.c index de84a5b..b8f56f5 100644 --- a/lnet/klnds/gnilnd/gnilnd_cb.c +++ b/lnet/klnds/gnilnd/gnilnd_cb.c @@ -1164,6 +1164,7 @@ kgnilnd_unmap_buffer(kgn_tx_t *tx, int error) * verified peer notification - the theory is that * a TX error can be communicated in all other cases */ if (tx->tx_conn->gnc_state != GNILND_CONN_ESTABLISHED && + error != -GNILND_NOPURG && kgnilnd_check_purgatory_conn(tx->tx_conn)) { kgnilnd_add_purgatory_tx(tx); @@ -3246,6 +3247,11 @@ kgnilnd_check_rdma_cq(kgn_device_t *dev) spin_unlock(&conn->gnc_list_lock); kgnilnd_conn_mutex_unlock(&conn->gnc_rdma_mutex); + if (CFS_FAIL_CHECK(CFS_FAIL_GNI_RDMA_CQ_ERROR)) { + event_data = 1LL << 48; + rc = 1; + } + if (likely(desc->status == GNI_RC_SUCCESS) && rc == 0) { atomic_inc(&dev->gnd_rdma_ntx); atomic64_add(tx->tx_nob, &dev->gnd_rdma_txbytes); @@ -3300,7 +3306,7 @@ kgnilnd_check_rdma_cq(kgn_device_t *dev) -EFAULT, rcookie, tx->tx_msg.gnm_srcnid); - kgnilnd_tx_done(tx, -EFAULT); + kgnilnd_tx_done(tx, -GNILND_NOPURG); kgnilnd_close_conn(conn, -ECOMM); }