14 Dec, 2011

2 commits

  • blk_insert_cloned_request(), blk_execute_rq_nowait() and
    blk_flush_plug_list() either didn't check whether the queue was dead
    or did it without holding queue_lock. Update them so that dead state
    is checked while holding queue_lock.

    AFAICS, this plugs all holes (requeue doesn't matter as the request is
    transitioning atomically from in_flight to queued).

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • There are a number of QUEUE_FLAG_DEAD tests. Add blk_queue_dead()
    macro and use it.

    This patch doesn't introduce any functional difference.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jens Axboe

    Tejun Heo
     

22 Jul, 2011

1 commit

  • USB surprise removal of sr is triggering an oops in
    scsi_dispatch_command(). What seems to be happening is that USB is
    hanging on to a queue reference until the last close of the upper
    device, so the crash is caused by surprise remove of a mounted CD
    followed by attempted unmount.

    The problem is that USB doesn't issue its final commands as part of
    the SCSI teardown path, but on last close when the block queue is long
    gone. The long term fix is probably to make sr do the teardown in the
    same way as sd (so remove all the lower bits on ejection, but keep the
    upper disk alive until last close of user space). However, the
    current oops can be simply fixed by not allowing any commands to be
    sent to a dead queue.

    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    James Bottomley
     

06 May, 2011

1 commit


18 Apr, 2011

1 commit

  • Instead of overloading __blk_run_queue to force an offload to kblockd
    add a new blk_run_queue_async helper to do it explicitly. I've kept
    the blk_queue_stopped check for now, but I suspect it's not needed
    as the check we do when the workqueue items runs should be enough.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

10 Mar, 2011

2 commits


24 Sep, 2010

1 commit

  • During long I/O operations, the hang_check timer may fire,
    trigger stack dumps that unnecessarily alarm the user.

    Eg. hdparm --security-erase NULL /dev/sdb ## can take *hours* to complete

    So, if hang_check is armed, we should wake up periodically
    to prevent it from triggering. This patch uses a wake-up interval
    equal to half the hang_check timer period, which keeps overhead low enough.

    Signed-off-by: Mark Lord
    Signed-off-by: Jens Axboe

    Mark Lord
     

08 Aug, 2010

1 commit


28 Apr, 2009

1 commit

  • RQ_NOMERGE_FLAGS already clears defines which REQ flags aren't
    mergeable. There is no reason to specify it superflously. It only
    adds to confusion. Don't set REQ_NOMERGE for barriers and requests
    with specific queueing directive. REQ_NOMERGE is now exclusively used
    by the merging code.

    [ Impact: cleanup ]

    Signed-off-by: Tejun Heo

    Tejun Heo
     

09 Oct, 2008

1 commit


16 Jul, 2008

2 commits

  • All the users of blk_end_sync_rq has gone (they are converted to use
    blk_execute_rq). This unexports blk_end_sync_rq.

    Signed-off-by: FUJITA Tomonori
    Cc: Borislav Petkov
    Signed-off-by: Jens Axboe
    Signed-off-by: Bartlomiej Zolnierkiewicz

    FUJITA Tomonori
     
  • For blk_pm_resume_request() requests (which are used only by IDE subsystem
    currently) the queue is stopped so we need to call ->request_fn explicitly.

    Thanks to:
    - Rafael for reporting/bisecting the bug
    - Borislav/Rafael for testing the fix

    This is a preparation for converting IDE to use blk_execute_rq().

    Cc: FUJITA Tomonori
    Cc: Borislav Petkov
    Cc: Jens Axboe
    Cc: "Rafael J. Wysocki"
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

01 Feb, 2008

1 commit


30 Jan, 2008

1 commit