Re: [PATCH-v4 0/5] Fix LUN_RESET active I/O + TMR handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Nic, 


On 2/6/16, 7:17 PM, "Nicholas A. Bellinger" <nab@xxxxxxxxxxxxx> wrote:

>From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx>
>
>Hi folks,
>
>Here is -v4 series to address the set of of LUN_RESET
>active I/O + TMR se_cmd->cmd_kref < 0 bugs as reported
>recently by Quinn & Co.  This can occur during active
>I/O remote port TMR LUN_RESET with multi-port LIO
>configurations.
>
>To address this bug, we add a __target_check_io_state()
>common handler for ABORT_TASK + LUN_RESET I/O abort
>cases, and move the remaining se_cmd SGL page + release
>into target_free_cmd_mem() to now be called directly
>from final target_release_cmd_kref() callback.
>
>It also adds a target_wait_free_cmd() helper and makes
>transport_generic_free_cmd() aware of CMD_T_ABORTED
>status during concurrent session disconnects, and
>introduces CMD_T_FABRIC_STOP bit to signal this special
>case.
>
>Currently this series is running atop v4.5-rc1 + v3.14.y,
>and with iscsi-target ports is able to survive active
>I/O remote-port LUN resets, plus remote-port LUN_RESET
>with concurrent simulated session disconnects.
>
>At this point the changes are stable with iscsi-target
>ports, and as Himanshu + Co can verify with tcm_qla2xxx
>should be considered ready to merge for -rc4.
>
>Please review + test.
>
>--nab
>
>v4 changes:
>
>- Add explicit CMD_T_FABRIC_STOP check and drop cmd_wait_set
>  bit set usage in __target_check_io_state().
>- Set early CMD_T_TAS in __target_check_io_state to avoid
>  potential race in transport_send_task_abort() with shutdown.
>- Add fabric_stop + aborted checks in __transport_wait_for_tasks()
>  in order to let TMR CMD_T_ABORTED se_cmd shutdown complete
>  during concurrent session disconnect.
>- Fix race with driver SCF_SEND_DELAYED_TAS handling when
>  __transport_check_aborted_status() could happen before
>  transport_send_task_abort() in TMR kthread context.
>
>Nicholas Bellinger (5):
>  target: Fix LUN_RESET active I/O handling for ACK_KREF
>  target: Fix LUN_RESET active TMR descriptor handling
>  target: Fix TAS handling for multi-session se_node_acls
>  target: Fix remote-port TMR ABORT + se_cmd fabric stop
>  target: Fix race with SCF_SEND_DELAYED_TAS handling
>
> drivers/target/target_core_tmr.c       | 139 ++++++++++++-----
> drivers/target/target_core_transport.c | 278
>+++++++++++++++++++++++----------
> include/target/target_core_base.h      |   3 +
> 3 files changed, 301 insertions(+), 119 deletions(-)
>
>-- 
>1.9.1
>

I am testing this series with with 4.5.0-rc2+ kernel and I am seeing issue
where trying to trigger
sg_reset with option of host/device/bus in loop at 120second interval
causes call stack. At this point
removing configuration hangs indefinitely. See attached dmesg output from
my setup. 

Thanks,
Himanshu

<<attachment: winmail.dat>>


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux