Re: [PATCH] block: ataflop: more blk-mq refactoring fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 27, 2024 at 02:37:28PM +1300, Michael Schmitz wrote:
> [ 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@xxxxxxxxx>
> Fixes: 6ec3938cff95f (ataflop: convert to blk-mq)
> Fixes: 86d46fdaa12a (block: ataflop: fix breakage introduced at blk-mq refactoring)
> CC: stable@xxxxxxxxxxxxxxx # 5.10.x
> Link: https://lore.kernel.org/r/20211024002013.9332-1-schmitzmic@xxxxxxxxx
> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
> [MSch: v5.10 backport merge conflict fix]

Now queued up, thanks.

greg k-h




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux