mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-22 20:23:57 +08:00
cciss: fix lost command issue
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 <mike.miller@hp.com> Cc: stable@kernel.org Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
This commit is contained in:
parent
f0ff1357ce
commit
1ddd504954
@ -222,6 +222,7 @@ static void SA5_submit_command( ctlr_info_t *h, CommandList_struct *c)
|
|||||||
h->ctlr, c->busaddr);
|
h->ctlr, c->busaddr);
|
||||||
#endif /* CCISS_DEBUG */
|
#endif /* CCISS_DEBUG */
|
||||||
writel(c->busaddr, h->vaddr + SA5_REQUEST_PORT_OFFSET);
|
writel(c->busaddr, h->vaddr + SA5_REQUEST_PORT_OFFSET);
|
||||||
|
readl(h->vaddr + SA5_REQUEST_PORT_OFFSET);
|
||||||
h->commands_outstanding++;
|
h->commands_outstanding++;
|
||||||
if ( h->commands_outstanding > h->max_outstanding)
|
if ( h->commands_outstanding > h->max_outstanding)
|
||||||
h->max_outstanding = h->commands_outstanding;
|
h->max_outstanding = h->commands_outstanding;
|
||||||
|
Loading…
Reference in New Issue
Block a user