HomeFreeBSD

Fix multiple problems around LUN disable under load.

Description

Fix multiple problems around LUN disable under load.

  • Move private data about ATIOs/INOTs from per-LUN to per-channel data.

This allows active commands to continue operation after LUN destruction.
This also simplifies lookup of the data by tag in some situations.

  • Unify three restart_queue processing implementations.
  • Complete all ATIOs from restart_queue on LUN disable.
  • Delete ATIO private data when command completed or aborted, not depending

on the ATIO being requeued, that was ugly hack and could never happen. CAM
should always call ether XPT_CONT_TARGET_IO with status or XPT_ABORT.

  • Implement XPT_ABORT for queued ATIOs/INOTs to allow CAM do graceful

shutdown, not depending on LUN disable, as it is done in ahd(4)/targ(4).

  • Unify isp_endcmd() arguments to make it more usable in generic code.
  • Remove never really used LUN state reference counter.

MFC after: 2 weeks

Details

Provenance
mavAuthored on
Parents
rS314085: MFC: 312687, 312688
Branches
Unknown
Tags
Unknown