diff options
author | Jens Axboe <axboe@kernel.dk> | 2023-06-30 22:04:08 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2023-06-30 22:04:08 +0200 |
commit | 6e34e784e72132c91b03d4f2f85bd4725b1ad9e5 (patch) | |
tree | 322d69c0d212c62d88a5c817ef8968a9c1cfe81f /drivers/nvme/host/multipath.c | |
parent | cdrom/gdrom: Fix build error (diff) | |
parent | nvme: disable controller on reset state failure (diff) | |
download | linux-6e34e784e72132c91b03d4f2f85bd4725b1ad9e5.tar.xz linux-6e34e784e72132c91b03d4f2f85bd4725b1ad9e5.zip |
Merge tag 'nvme-6.5-2023-06-30' of git://git.infradead.org/nvme into block-6.5
Pull NVMe fixes from Keith:
"nvme fixes for Linux 6.5
- Reduce spamming kernel logs on repeated controller updates (Breno)
- Improved struct packing (Christophe JAILLET)
- Misspelled command name in error logging (Damien)
- Failover fix for temporary frozen queue (Sagi)
- Reset error handling fixes (Keith)"
* tag 'nvme-6.5-2023-06-30' of git://git.infradead.org/nvme:
nvme: disable controller on reset state failure
nvme: sync timeout work on failed reset
nvme: ensure unquiesce on teardown
nvme-mpath: fix I/O failure with EAGAIN when failing over I/O
nvme: host: fix command name spelling
nvmet: Reorder fields in 'struct nvmet_ns'
nvme: Print capabilities changes just once
Diffstat (limited to 'drivers/nvme/host/multipath.c')
-rw-r--r-- | drivers/nvme/host/multipath.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c index 5aa1592849af..0a88d7bdc5e3 100644 --- a/drivers/nvme/host/multipath.c +++ b/drivers/nvme/host/multipath.c @@ -106,6 +106,14 @@ void nvme_failover_req(struct request *req) bio->bi_opf &= ~REQ_POLLED; bio->bi_cookie = BLK_QC_T_NONE; } + /* + * The alternate request queue that we may end up submitting + * the bio to may be frozen temporarily, in this case REQ_NOWAIT + * will fail the I/O immediately with EAGAIN to the issuer. + * We are not in the issuer context which cannot block. Clear + * the flag to avoid spurious EAGAIN I/O failures. + */ + bio->bi_opf &= ~REQ_NOWAIT; } blk_steal_bios(&ns->head->requeue_list, req); spin_unlock_irqrestore(&ns->head->requeue_lock, flags); |