]> git.baikalelectronics.ru Git - kernel.git/commit
target: Use system workqueue for ALUA transitions
authorMike Christie <mchristi@redhat.com>
Thu, 2 Mar 2017 05:13:26 +0000 (23:13 -0600)
committerNicholas Bellinger <nab@linux-iscsi.org>
Sat, 18 Mar 2017 21:47:27 +0000 (14:47 -0700)
commit75c0c47340b3487fbbe11cc4865ee5e81245d202
tree226f65d6991270617bfa867436be34721814d3e0
parent6e3ae385dc05a2437e6f8f797a1fed0a7d4eb5dc
target: Use system workqueue for ALUA transitions

If tcmu-runner is processing a STPG and needs to change the kernel's
ALUA state then we cannot use the same work queue for task management
requests and ALUA transitions, because we could deadlock. The problem
occurs when a STPG times out before tcmu-runner is able to
call into target_tg_pt_gp_alua_access_state_store->
core_alua_do_port_transition -> core_alua_do_transition_tg_pt ->
queue_work. In this case, the tmr is on the work queue waiting for
the STPG to complete, but the STPG transition is now queued behind
the waiting tmr.

Note:
This bug will also be fixed by this patch:
http://www.spinics.net/lists/target-devel/msg14560.html
which switches the tmr code to use the system workqueues.

For both, I am not sure if we need a dedicated workqueue since
it is not a performance path and I do not think we need WQ_MEM_RECLAIM
to make forward progress to free up memory like the block layer does.

Signed-off-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_alua.c