lkml.org 
[lkml]   [2020]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 1/2] virtio-blk: fix hw_queue stopped on arbitrary error
    On Thu, Feb 13, 2020 at 8:38 PM Halil Pasic <pasic@linux.ibm.com> wrote:
    >
    > Since nobody else is going to restart our hw_queue for us, the
    > blk_mq_start_stopped_hw_queues() is in virtblk_done() is not sufficient
    > necessarily sufficient to ensure that the queue will get started again.
    > In case of global resource outage (-ENOMEM because mapping failure,
    > because of swiotlb full) our virtqueue may be empty and we can get
    > stuck with a stopped hw_queue.
    >
    > Let us not stop the queue on arbitrary errors, but only on -EONSPC which
    > indicates a full virtqueue, where the hw_queue is guaranteed to get
    > started by virtblk_done() before when it makes sense to carry on
    > submitting requests. Let us also remove a stale comment.

    The generic solution may be to stop queue only when there is any
    in-flight request
    not completed.

    Checking -ENOMEM may not be enough, given -EIO can be returned from
    virtqueue_add()
    too in case of dma map failure.

    Thanks,

    \
     
     \ /
      Last update: 2020-02-18 03:22    [W:2.548 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site