You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
mtip32xx: fix up the checking for internal command failure
This fixes up two commits that have touched this driver. The command status field is now a blk_status_t, so we can't check for < 0 and we definitely can't assume it's holding -Exxxx error values. All we care about here is whether ->status is zero or not. Check for that, and remove the various attempts at smart error reporting. Just log to dmesg what command failed, and the blk_status_t value. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Fixes:2a842acab1("block: introduce new block status code type") Fixes:3f5e6a3577("mtip32xx: convert internal command issue to block IO path") Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
@@ -1063,23 +1063,10 @@ static int mtip_exec_internal_command(struct mtip_port *port,
|
|||||||
/* insert request and run queue */
|
/* insert request and run queue */
|
||||||
blk_execute_rq(rq->q, NULL, rq, true);
|
blk_execute_rq(rq->q, NULL, rq, true);
|
||||||
|
|
||||||
rv = int_cmd->status;
|
if (int_cmd->status) {
|
||||||
if (rv < 0) {
|
dev_err(&dd->pdev->dev, "Internal command [%02X] failed %d\n",
|
||||||
if (rv == -ERESTARTSYS) { /* interrupted */
|
fis->command, int_cmd->status);
|
||||||
dev_err(&dd->pdev->dev,
|
rv = -EIO;
|
||||||
"Internal command [%02X] was interrupted after %u ms\n",
|
|
||||||
fis->command,
|
|
||||||
jiffies_to_msecs(jiffies - start));
|
|
||||||
rv = -EINTR;
|
|
||||||
goto exec_ic_exit;
|
|
||||||
} else if (rv == 0) /* timeout */
|
|
||||||
dev_err(&dd->pdev->dev,
|
|
||||||
"Internal command did not complete [%02X] within timeout of %lu ms\n",
|
|
||||||
fis->command, timeout);
|
|
||||||
else
|
|
||||||
dev_err(&dd->pdev->dev,
|
|
||||||
"Internal command [%02X] wait returned code [%d] after %lu ms - unhandled\n",
|
|
||||||
fis->command, rv, timeout);
|
|
||||||
|
|
||||||
if (mtip_check_surprise_removal(dd->pdev) ||
|
if (mtip_check_surprise_removal(dd->pdev) ||
|
||||||
test_bit(MTIP_DDF_REMOVE_PENDING_BIT,
|
test_bit(MTIP_DDF_REMOVE_PENDING_BIT,
|
||||||
|
|||||||
Reference in New Issue
Block a user