.. | .. |
---|
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 | } |
---|