Long story short -> https://goo.gl/vPyh8C

Basically the block device enqueues the last request (a SYNC scsi
command coming from sd_shutdown) for every scsi device there is on the
system. Unfortunately, since the OS is shutting down, in between the
block request and its execution, we have userland (systemd) killing
iscsid, without proper logout, and/or removing the network.

What happens next is that the mid layer (SCSI) tries to deliver the
request through the transport layer (iscsi_tcp_sw) but it fails since
the transport layer checks the session status and finds out that the
session is not in LOGIN state.

The default behaviour of the transport layer (iscsi_tcp_sw) in such
situation is to tell the mid-layer to keep resetting the request timeout
timer while it tries to recover (something that will never happen
because the network is gone).

Changing that default behavior to state that the scsi command was NOT
handled by the transport layer (iscsi_tcp_sw) implies in making the scsi
timeout function to try to "abort" the scsi command, which also creates
other commands that will timeout because of the transport layer.

Best scenario so far was to change BLK_EH_NOT_HANDLED for BLK_EH_HANDLED
in the scsi_times_out function and make the kernel to be able to
shutdown. By doing that, I'm confirming to block device something that
DID NOT happen, meaning that the command never left the transport layer.

This might be ONE of possible ways to fix this: I can mark in the
transport layer that I have timed-out DURING the shutdown procedure,
cancelling all the block device requests without having to invoke the
scsi error handling mechanism, generating more traffic in transport
layer (what would also cause more timeouts, causing a loop in the
problematic sequence).

Anyway, I'll get back to this next week and hopefully identify best
course of action.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1569925

Title:
  Shutdown hang on 16.04 with iscsi targets

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1569925/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to