Commit 5291984004edf ("dm: fix bio polling to handle possibile BLK_STS_AGAIN") inadvertently introduced an early return from dm_io_complete() without first queueing the bio to DM if BLK_STS_AGAIN occurs and bio-polling is _not_ being used. Fix this by only returning early from dm_io_complete() if the bio has first been properly queued to DM. Otherwise, the bio will never finish via bio_endio.
Unified · Split
| @@ -939,9 +939,11 @@ static void dm_io_complete(struct dm_io *io) · 938 unmodified lines | ||
| 939 | 939 | if (io_error == BLK_STS_AGAIN) { |
| 940 | 940 | /* io_uring doesn't handle BLK_STS_AGAIN (yet) */ |
| 941 | 941 | queue_io(md, bio); |
| 942 | + return; | |
| 942 | 943 | } |
| 943 | 944 | } |
| 944 | − return; | |
| 945 | + if (io_error == BLK_STS_DM_REQUEUE) | |
| 946 | + return; | |
| 945 | 947 | } |
| 946 | 948 | |
| 947 | 949 | if (bio_is_flush_with_data(bio)) { |