From: Hendrik Brueckner <brueckner@redhat.com> Date: Tue, 31 Aug 2010 09:23:53 -0400 Subject: [s390] dasd: let recovery cqr get flags from failed cqr Message-id: <20100831092351.GA3257@redhat.com> Patchwork-id: 27960 O-Subject: [RHEL5.6 PATCH 1/1] [s390x] dasd: let recovery cqr inherit flags from failed cqr Bugzilla: 628838 RH-Acked-by: Pete Zaitcev <zaitcev@redhat.com> Description ----------- Recovery requests behave not as expected, e.g. failfast is not working. The usual way to recover a failed DASD ECKD request (cqr) is to create a new request with an appropriate recovery CCW program. Certain features, e.g. failfast, can be enabled per request and are stored in the requests flags. The problem is, that these flags were not copied from the failed to the recovery request. Copy cqr flags when creating a recovery cqr. Bugzilla -------- BZ 628838 https://bugzilla.redhat.com/show_bug.cgi?id=628838 Upstream status of the patch ---------------------------- The patch has been queued and will be sent out for inclusion into the current kernel -rc release. Test status ----------- The patch has been tested and fixes the problem. The fix has been verified by the IBM test department. diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c index 9fcc827..c5dca0c 100644 --- a/drivers/s390/block/dasd_3990_erp.c +++ b/drivers/s390/block/dasd_3990_erp.c @@ -370,6 +370,7 @@ dasd_3990_erp_DCTL(struct dasd_ccw_req * erp, char modifier) ccw->cmd_code = CCW_CMD_DCTL; ccw->count = 4; ccw->cda = (__u32)(addr_t) DCTL_data; + dctl_cqr->flags = erp->flags; dctl_cqr->function = dasd_3990_erp_DCTL; dctl_cqr->refers = erp; dctl_cqr->device = erp->device; @@ -1769,6 +1770,7 @@ dasd_3990_erp_action_1B_32(struct dasd_ccw_req * default_erp, char *sense) ccw->cda = cpa; /* fill erp related fields */ + erp->flags = default_erp->flags; erp->function = dasd_3990_erp_action_1B_32; erp->refers = default_erp->refers; erp->device = device; @@ -2383,6 +2385,7 @@ dasd_3990_erp_add_erp(struct dasd_ccw_req * cqr) ccw++; ccw->cmd_code = CCW_CMD_TIC; ccw->cda = (long)(cqr->cpaddr); + erp->flags = cqr->flags; erp->function = dasd_3990_erp_add_erp; erp->refers = cqr; erp->device = cqr->device;