summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/stackcollapse.py
diff options
context:
space:
mode:
authorJames Smart <jsmart2021@gmail.com>2018-09-27 16:58:54 -0700
committerChristoph Hellwig <hch@lst.de>2018-10-01 14:16:13 -0700
commit783f4a4408e1251d17f333ad56abac24dde988b9 (patch)
treee6608004fd8b59f3732742c6c90adcc803a84533 /tools/perf/scripts/python/stackcollapse.py
parent09bd1ff4b15143bc0e6dd2adf39f59f6ab6e2621 (diff)
downloadkernel-783f4a4408e1251d17f333ad56abac24dde988b9.tar.gz
nvme: call nvme_complete_rq when nvmf_check_ready fails for mpath I/O
When an io is rejected by nvmf_check_ready() due to validation of the controller state, the nvmf_fail_nonready_command() will normally return BLK_STS_RESOURCE to requeue and retry. However, if the controller is dying or the I/O is marked for NVMe multipath, the I/O is failed so that the controller can terminate or so that the io can be issued on a different path. Unfortunately, as this reject point is before the transport has accepted the command, blk-mq ends up completing the I/O and never calls nvme_complete_rq(), which is where multipath may preserve or re-route the I/O. The end result is, the device user ends up seeing an EIO error. Example: single path connectivity, controller is under load, and a reset is induced. An I/O is received: a) while the reset state has been set but the queues have yet to be stopped; or b) after queues are started (at end of reset) but before the reconnect has completed. The I/O finishes with an EIO status. This patch makes the following changes: - Adds the HOST_PATH_ERROR pathing status from TP4028 - Modifies the reject point such that it appears to queue successfully, but actually completes the io with the new pathing status and calls nvme_complete_rq(). - nvme_complete_rq() recognizes the new status, avoids resetting the controller (likely was already done in order to get this new status), and calls the multipather to clear the current path that errored. This allows the next command (retry or new command) to select a new path if there is one. Signed-off-by: James Smart <jsmart2021@gmail.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
/td> 2023-09-19s390: use control register bit definesHeiko Carstens 2023-09-19s390/ctlreg: add local and system prefix to some functionsHeiko Carstens 2023-09-19s390/ctlreg: rename ctl_reg.h to ctlreg.hHeiko Carstens 2023-07-03s390: fix various typosHeiko Carstens 2023-05-15s390/pai_ext: replace atomic_t with refcount_tThomas Richter 2023-02-21Merge tag 's390-6.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/...Linus Torvalds 2023-01-25s390/cpum_cf: merge source files for CPU Measurement counter facilityThomas Richter 2023-01-18perf/core: Add perf_sample_save_raw_data() helperNamhyung Kim 2022-12-12Merge tag 'perf-core-2022-12-12' of git://git.kernel.org/pub/scm/linux/kernel...Linus Torvalds 2022-12-12Merge tag 's390-6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/...Linus Torvalds 2022-10-27perf: Rewrite core context handlingPeter Zijlstra 2022-10-26s390/pai: fix raw data collection for PMU pai_extThomas Richter 2022-10-26s390/pai: move enum definition to header fileThomas Richter 2022-09-16s390/pai: Add support for PAI Extension 1 NNPA countersThomas Richter