[lkml]   [2008]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: Changes to Linux/SCSI target mode infrastructure for v2.6.28
    Nicholas A. Bellinger <> wrote:
    > On Tue, 2008-12-02 at 13:18 +0900, Tejun Heo wrote:
    > >
    > > >>> The other one is a BUG_ON in blk/blk-timeout.c:177 in blk_add_timeout()
    > > >>> that happens after a few hundred MB of READ_10 traffic, which also
    > > >>> appears to pass through elv_dequeue_request() at some point:
    > > >>>
    > > >>>
    > > >>>
    > >
    > > Hmmm... this means blk_add_timer() is being called after the request
    > > is already completed.

    or is it possible since elv_dequeue_request BUG_ON check of queuelist did
    not trigger a request is on the queuelist with a timeout_list not empty.

    It would be interesting for a debug run to change the
    "BUG_ON(!list_empty(&req->timeout_list))" in blk_add_timer to print out
    the cmd_flags plus req->atomic_flags and also add a
    "BUG_ON(!list_empty(&rq->timeout_list))" to elv_insert to ensure a request
    is never added to the queuelist with a timeout_list not empty.

    > All the problem discovered till now have to do
    > > with timeout going off without the low level driver knowing about the
    > > request. I don't have much idea and it'll probably be best to trace
    > > what's going on using blktrace or printks.
    > <nod>, OK.
    > > Maybe this is caused by
    > > list corruption as with the first issue or request completion races
    > > with requeueing?
    > Hrmm, yeah, perhaps the use of scsi_req_map_sg() (which obviously still
    > has struct bio behind it) is causing the breakage.. I will wait for
    > Tomo, Boaz and co to have a look at the original patch to
    > lio-core-2.6.git/drivers/lio-core/target_core_pscsi.c and see if I am
    > missing something obvious.
    > Also, with the previous patch to drivers/scsi/scsi_lib.c(), I am able to
    > move a few GB of bulk I/O and not hit the BUG_ON in
    > blk/blk-timeout.c:177 in blk_add_timeout() mentioned above when feeding
    > struct request into struct scsi_device->request_queue with
    > blk_execute_rq_nowait() with use_sg > 0 CDBs. However, I am still
    > running into another reproducable BUG_ON in
    > block/cfq-iosched.c:cfq_find_next_rq() after extended bulk I/O tests.

    Michael Anderson

     \ /
      Last update: 2008-12-02 07:43    [from the cache]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site