| .. | .. |
|---|
| 656 | 656 | isert_connect_error(struct rdma_cm_id *cma_id) |
|---|
| 657 | 657 | { |
|---|
| 658 | 658 | struct isert_conn *isert_conn = cma_id->qp->qp_context; |
|---|
| 659 | + struct isert_np *isert_np = cma_id->context; |
|---|
| 659 | 660 | |
|---|
| 660 | 661 | ib_drain_qp(isert_conn->qp); |
|---|
| 662 | + |
|---|
| 663 | + mutex_lock(&isert_np->mutex); |
|---|
| 661 | 664 | list_del_init(&isert_conn->node); |
|---|
| 665 | + mutex_unlock(&isert_np->mutex); |
|---|
| 662 | 666 | isert_conn->cm_id = NULL; |
|---|
| 663 | 667 | isert_put_conn(isert_conn); |
|---|
| 664 | 668 | |
|---|
| .. | .. |
|---|
| 1553 | 1557 | } |
|---|
| 1554 | 1558 | sec_offset_err = mr_status.sig_err.sig_err_offset; |
|---|
| 1555 | 1559 | do_div(sec_offset_err, block_size); |
|---|
| 1556 | | - se_cmd->bad_sector = sec_offset_err + se_cmd->t_task_lba; |
|---|
| 1560 | + se_cmd->sense_info = sec_offset_err + se_cmd->t_task_lba; |
|---|
| 1557 | 1561 | |
|---|
| 1558 | 1562 | isert_err("PI error found type %d at sector 0x%llx " |
|---|
| 1559 | 1563 | "expected 0x%x vs actual 0x%x\n", |
|---|
| 1560 | 1564 | mr_status.sig_err.err_type, |
|---|
| 1561 | | - (unsigned long long)se_cmd->bad_sector, |
|---|
| 1565 | + (unsigned long long)se_cmd->sense_info, |
|---|
| 1562 | 1566 | mr_status.sig_err.expected, |
|---|
| 1563 | 1567 | mr_status.sig_err.actual); |
|---|
| 1564 | 1568 | ret = 1; |
|---|
| .. | .. |
|---|
| 2421 | 2425 | { |
|---|
| 2422 | 2426 | struct isert_np *isert_np = np->np_context; |
|---|
| 2423 | 2427 | struct isert_conn *isert_conn, *n; |
|---|
| 2428 | + LIST_HEAD(drop_conn_list); |
|---|
| 2424 | 2429 | |
|---|
| 2425 | 2430 | if (isert_np->cm_id) |
|---|
| 2426 | 2431 | rdma_destroy_id(isert_np->cm_id); |
|---|
| .. | .. |
|---|
| 2440 | 2445 | node) { |
|---|
| 2441 | 2446 | isert_info("cleaning isert_conn %p state (%d)\n", |
|---|
| 2442 | 2447 | isert_conn, isert_conn->state); |
|---|
| 2443 | | - isert_connect_release(isert_conn); |
|---|
| 2448 | + list_move_tail(&isert_conn->node, &drop_conn_list); |
|---|
| 2444 | 2449 | } |
|---|
| 2445 | 2450 | } |
|---|
| 2446 | 2451 | |
|---|
| .. | .. |
|---|
| 2451 | 2456 | node) { |
|---|
| 2452 | 2457 | isert_info("cleaning isert_conn %p state (%d)\n", |
|---|
| 2453 | 2458 | isert_conn, isert_conn->state); |
|---|
| 2454 | | - isert_connect_release(isert_conn); |
|---|
| 2459 | + list_move_tail(&isert_conn->node, &drop_conn_list); |
|---|
| 2455 | 2460 | } |
|---|
| 2456 | 2461 | } |
|---|
| 2457 | 2462 | mutex_unlock(&isert_np->mutex); |
|---|
| 2458 | 2463 | |
|---|
| 2464 | + list_for_each_entry_safe(isert_conn, n, &drop_conn_list, node) { |
|---|
| 2465 | + list_del_init(&isert_conn->node); |
|---|
| 2466 | + isert_connect_release(isert_conn); |
|---|
| 2467 | + } |
|---|
| 2468 | + |
|---|
| 2459 | 2469 | np->np_context = NULL; |
|---|
| 2460 | 2470 | kfree(isert_np); |
|---|
| 2461 | 2471 | } |
|---|