kernel_samsung_a53x/drivers/block
Michael Schmitz 80cf810c71 block: ataflop: more blk-mq refactoring fixes
commit d28e4dff085c5a87025c9a0a85fb798bd8e9ca17 upstream.

As it turns out, my earlier patch in commit 86d46fdaa12a (block:
ataflop: fix breakage introduced at blk-mq refactoring) was
incomplete. This patch fixes any remaining issues found during
more testing and code review.

Requests exceeding 4 k are handled in 4k segments but
__blk_mq_end_request() is never called on these (still
sectors outstanding on the request). With redo_fd_request()
removed, there is no provision to kick off processing of the
next segment, causing requests exceeding 4k to hang. (By
setting /sys/block/fd0/queue/max_sectors_k <= 4 as workaround,
this behaviour can be avoided).

Instead of reintroducing redo_fd_request(), requeue the remainder
of the request by calling blk_mq_requeue_request() on incomplete
requests (i.e. when blk_update_request() still returns true), and
rely on the block layer to queue the residual as new request.

Both error handling and formatting needs to release the
ST-DMA lock, so call finish_fdc() on these (this was previously
handled by redo_fd_request()). finish_fdc() may be called
legitimately without the ST-DMA lock held - make sure we only
release the lock if we actually held it. In a similar way,
early exit due to errors in ataflop_queue_rq() must release
the lock.

After minor errors, fd_error sets up to recalibrate the drive
but never re-runs the current operation (another task handled by
redo_fd_request() before). Call do_fd_action() to get the next
steps (seek, retry read/write) underway.

Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
Fixes: 6ec3938cff95f (ataflop: convert to blk-mq)
CC: linux-block@vger.kernel.org
Link: https://lore.kernel.org/r/20211024002013.9332-1-schmitzmic@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
[MSch: v5.10 backport merge conflict fix]
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-18 22:25:42 +01:00
..
aoe Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
drbd Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mtip32xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
null_blk Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
paride Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rnbd block/rnbd-srv: Check for unlikely string overflow 2024-11-18 12:13:13 +01:00
rsxx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xen-blkback Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
zram zram: use copy_page for full page copy 2024-11-17 17:41:38 +01:00
amiflop.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ataflop.c block: ataflop: more blk-mq refactoring fixes 2024-11-18 22:25:42 +01:00
brd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cryptoloop.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
floppy.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
loop.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
loop.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nbd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pktcdvd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ps3disk.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ps3vram.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rbd.c rbd: don't move requests to the running list on errors 2024-11-18 12:13:02 +01:00
rbd_types.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
skd_main.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
skd_s1120.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sunvdc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
swim.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
swim3.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
swim_asm.S Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
umem.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
umem.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
virtio_blk.c virtio-blk: Ensure no requests in virtqueues before deleting vqs. 2024-11-18 22:25:34 +01:00
xen-blkfront.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xsysace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
z2ram.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00