diff options
Diffstat (limited to 'drivers/s390/block/dasd.c')
-rw-r--r-- | drivers/s390/block/dasd.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index d640427c74c8..d984e0fae630 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -1057,12 +1057,11 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm, | |||
1057 | if (device->features & DASD_FEATURE_ERPLOG) { | 1057 | if (device->features & DASD_FEATURE_ERPLOG) { |
1058 | dasd_log_sense(cqr, irb); | 1058 | dasd_log_sense(cqr, irb); |
1059 | } | 1059 | } |
1060 | /* If we have no sense data, or we just don't want complex ERP | 1060 | /* |
1061 | * for this request, but if we have retries left, then just | 1061 | * If we don't want complex ERP for this request, then just |
1062 | * reset this request and retry it in the fastpath | 1062 | * reset this and retry it in the fastpath |
1063 | */ | 1063 | */ |
1064 | if (!(cqr->irb.esw.esw0.erw.cons && | 1064 | if (!test_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags) && |
1065 | test_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags)) && | ||
1066 | cqr->retries > 0) { | 1065 | cqr->retries > 0) { |
1067 | DEV_MESSAGE(KERN_DEBUG, device, | 1066 | DEV_MESSAGE(KERN_DEBUG, device, |
1068 | "default ERP in fastpath (%i retries left)", | 1067 | "default ERP in fastpath (%i retries left)", |
@@ -1707,7 +1706,7 @@ static void __dasd_cleanup_cqr(struct dasd_ccw_req *cqr) | |||
1707 | 1706 | ||
1708 | req = (struct request *) cqr->callback_data; | 1707 | req = (struct request *) cqr->callback_data; |
1709 | dasd_profile_end(cqr->block, cqr, req); | 1708 | dasd_profile_end(cqr->block, cqr, req); |
1710 | status = cqr->memdev->discipline->free_cp(cqr, req); | 1709 | status = cqr->block->base->discipline->free_cp(cqr, req); |
1711 | if (status <= 0) | 1710 | if (status <= 0) |
1712 | error = status ? status : -EIO; | 1711 | error = status ? status : -EIO; |
1713 | dasd_end_request(req, error); | 1712 | dasd_end_request(req, error); |
@@ -1742,12 +1741,8 @@ restart: | |||
1742 | 1741 | ||
1743 | /* Process requests that may be recovered */ | 1742 | /* Process requests that may be recovered */ |
1744 | if (cqr->status == DASD_CQR_NEED_ERP) { | 1743 | if (cqr->status == DASD_CQR_NEED_ERP) { |
1745 | if (cqr->irb.esw.esw0.erw.cons && | 1744 | erp_fn = base->discipline->erp_action(cqr); |
1746 | test_bit(DASD_CQR_FLAGS_USE_ERP, | 1745 | erp_fn(cqr); |
1747 | &cqr->flags)) { | ||
1748 | erp_fn = base->discipline->erp_action(cqr); | ||
1749 | erp_fn(cqr); | ||
1750 | } | ||
1751 | goto restart; | 1746 | goto restart; |
1752 | } | 1747 | } |
1753 | 1748 | ||