[lkml]   [2012]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[34-longterm 009/196] cciss: fix lost command issue
    From: Bud Brown <>

    This is a commit scheduled for the next v2.6.34 longterm release.
    If you see a problem with using this for longterm, please comment.

    commit 1ddd5049545e0aa1a0ed19bca4d9c9c3ce1ac8a2 upstream.

    Under certain workloads a command may seem to get lost. IOW, the Smart Array
    thinks all commands have been completed but we still have commands in our
    completion queue. This may lead to system instability, filesystems going
    read-only, or even panics depending on the affected filesystem. We add an
    extra read to force the write to complete.

    Testing shows this extra read avoids the problem.

    Signed-off-by: Mike Miller <>
    Signed-off-by: Jens Axboe <>
    Signed-off-by: Paul Gortmaker <>
    drivers/block/cciss.h | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/drivers/block/cciss.h b/drivers/block/cciss.h
    index c5d4111..37a2d4f 100644
    --- a/drivers/block/cciss.h
    +++ b/drivers/block/cciss.h
    @@ -173,6 +173,7 @@ static void SA5_submit_command( ctlr_info_t *h, CommandList_struct *c)
    printk("Sending %x - down to controller\n", c->busaddr );
    #endif /* CCISS_DEBUG */
    writel(c->busaddr, h->vaddr + SA5_REQUEST_PORT_OFFSET);
    + readl(h->vaddr + SA5_REQUEST_PORT_OFFSET);
    if ( h->commands_outstanding > h->max_outstanding)
    h->max_outstanding = h->commands_outstanding;

     \ /
      Last update: 2012-03-13 01:21    [W:0.019 / U:24.868 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site