Actually, I had been playing around with marking the entire bio as
'NOWAIT'; that would avoid the tag stall, too:
@@ -313,7 +316,7 @@ blk_qc_t nvme_ns_head_submit_bio(struct bio *bio)
ns = nvme_find_path(head);
if (likely(ns)) {
bio_set_dev(bio, ns->disk->part0);
- bio->bi_opf |= REQ_NVME_MPATH;
+ bio->bi_opf |= REQ_NVME_MPATH | REQ_NOWAIT;
trace_block_bio_remap(bio, disk_devt(ns->head->disk),
bio->bi_iter.bi_sector);
ret = submit_bio_noacct(bio);
My only worry here is that we might incur spurious failures under high
load; but then this is not necessarily a bad thing.
What? making spurious failures is not ok under any load. what fs will
take into account that you may have run out of tags?