Skip to content

New EH command timeout handler

Hannes Reinecke linux-scsi 11 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v11 Latest5 patches 4 repliesIn review
  2. v105 patches 10 repliesSuperseded
  3. v94 patches 0 repliesSuperseded
Earlier versions · 8
VersionPostedPatchesRepliesStatus
v83 patches8 repliesSuperseded
v74 patches2 repliesSuperseded
v63 patches9 repliesSuperseded
v59 patches10 repliesSuperseded
v49 patches2 repliesSuperseded
v39 patches9 repliesSuperseded
v29 patches20 repliesSuperseded
v14 patches13 repliesSuperseded

Changes to v2 from the cover letter

- Removed eh_entry initialisation
- Convert to per-command workqueue

Patches in v11 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/5scsi: Fix erratic device offline during EHdrivers/scsi/scsi_error.c drivers/scsi/sd.c include/scsi/scsi_driver.h+30 -240 replies
2/5scsi: improved eh timeout handlerdrivers/scsi/hosts.c drivers/scsi/scsi.c drivers/scsi/scsi_error.c +3 more+167 -144 replies
3/5scsi: Unlock accesses to eh_deadlinedrivers/scsi/scsi_error.c+9 -350 replies
4/5scsi: Set the minimum valid value of 'eh_deadline' as 0drivers/scsi/hosts.c drivers/scsi/scsi_error.c drivers/scsi/scsi_sysfs.c+58 -280 replies
5/5scsi: Update documentationDocumentation/scsi/scsi_eh.txt Documentation/scsi/scsi_mid_low_api.txt drivers/scsi/scsi.c+48 -360 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v11 yet.

Read the v11 thread

Cover letter [PATCHv11 0/5] New EH command timeout handler

Hi all,

this patchset implements a new SCSI EH command timeout handler which will be sending command aborts inline without actually engaging SCSI EH.
SCSI EH will only be invoked if command abort fails.

In addition the commands will be returned directly if the command abort succeeded, cutting down recovery times dramatically.

With the original SCSI EH I got:

# time dd if=/dev/zero of=/dev/dm-2 bs=4k count=4k oflag=direct
4096+0 records in
4096+0 records out
16777216 bytes (17 MB) copied, 142.652 s, 118 kB/s

real 2m22.657s
user 0m0.013s
sys 0m0.145s

With this patchset I got:

# time dd if=/dev/zero of=/dev/dm-2 bs=4k count=4k oflag=direct
4096+0 records in
4096+0 records out
16777216 bytes (17 MB) copied, 52.1579 s, 322 kB/s

real 0m52.163s
user 0m0.012s
sys 0m0.145s

Test was to disable RSCN on the target port, disable the target port, and then start the 'dd' command as indicated.

Changes to the original version:
- Use a private list in scsi_eh_abort_handler to avoid list starvation (pointed out by Joern Engel)
- Terminate command aborts when the first abort fails
- Do not attempt command aborts if the host is already in recovery or if the device is removed.
- Flush abort workqueue if the device is removed.

Changes to v2:
- Removed eh_entry initialisation
- Convert to per-command workqueue

Changes to v3:
- Use delayed_work
- Enable new eh timeout handler for virtio, SAS, and FC
- Modify logging messages to include scmd pointer

Changes to v4:
- Remove stubs when enabling new eh timeout handler for other drivers

Changes to v5:
- Enable new eh timeout handler per default
- Update documentation

Changes to v6:
- Include changes from James Bottomley for erratic device offline patch
- Rearrange patches
- Update SCSI midlayer documentation

Changes to v7:
- Merge obsolete patch

Changes to v8:
- Include fixes from hch
- Include patch from Ren Mingxin to set eh_deadline to '0'

Changes to v9:
- Unlock accesses to eh_deadline

Changes to v10:
- Use private workqueue with WQ_MEM_RECLAIM set

Hannes Reinecke (3):
scsi: improved eh timeout handler
scsi: Unlock accesses to eh_deadline
scsi: Update documentation

James Bottomley (1):
scsi: Fix erratic device offline during EH

Ren Mingxin (1):
scsi: Set the minimum valid value of 'eh_deadline' as 0

 Documentation/scsi/scsi_eh.txt          |  69 +++++-----
 Documentation/scsi/scsi_mid_low_api.txt |   9 +-
 drivers/scsi/hosts.c                    |  30 ++++-
 drivers/scsi/scsi.c                     |   9 +-
 drivers/scsi/scsi_error.c               | 229 ++++++++++++++++++++++++--------
 drivers/scsi/scsi_priv.h                |   2 +
 drivers/scsi/scsi_sysfs.c               |  36 +++--
 drivers/scsi/sd.c                       |  26 ++--
 include/scsi/scsi_cmnd.h                |   1 +
 include/scsi/scsi_driver.h              |   2 +-
 include/scsi/scsi_host.h                |  10 ++
 11 files changed, 299 insertions(+), 124 deletions(-)
Signature · 1 line
1.7.12.4