fc_eh_timed_out(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

fc_eh_timed_out β€” FC Transport I/O timeout intercept handler, bestie. This one is from the Kernel API Manual, and yes, she is very specific about her job.


✨ SYNOPSIS ✨

enum scsi_timeout_action fc_eh_timed_out (struct scsi_cmnd *scmd );

πŸ’… ARGUMENTS πŸ’…

  • scmd β€” the SCSI command that timed out. That’s the whole argument, and honestly she ate.

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so this routine protects against error handlers getting invoked while an rport is in a blocked state β€” usually because connectivity got temporarily lost. It’s giving β€œdon’t panic, the rport is literally unavailable rn.”

If the error handlers are allowed to proceed, requests to abort i/o, reset the target, etc. will likely fail, because there is no way to communicate with the device to perform the requested function. Those failures may result in the midlayer taking the device offline, requiring manual intervention to restore operation. Not cute. We don’t want that.

This routine, called whenever an i/o times out, validates the state of the underlying rport. If the rport is blocked, it returns EH_RESET_TIMER, which will continue to reschedule the timeout. Eventually, either the device will return, or devloss_tmo will fire, and when the timeout then fires, it will be handled normally. If the rport is not blocked, normal error handling continues. Slay, predictable behavior.


πŸŽ€ NOTES πŸŽ€

🚨 This routine assumes no locks are held on entry. Respect the vibe check, please.

πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./drivers/scsi/scsi_transport_fc.c, plus the whole friend group:


Byeee from ./drivers/scsi, dated October 2026 β€” still your girl fc_eh_timed_out(9) πŸ’…βœ¨πŸ«Ά

πŸ“¦ where this page comes from