Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[S390] dasd: let recovery cqr inherit flags from failed cqr

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. These flags have to be copied from the failed to
the recovery request, to let the recovery request use the same
features as the original one.

Signed-off-by: Stefan Weinhuber <wein@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

authored by

Stefan Weinhuber and committed by
Martin Schwidefsky
7ea8d321 238ec4ef

+3
+3
drivers/s390/block/dasd_3990_erp.c
··· 221 221 ccw->cmd_code = CCW_CMD_DCTL; 222 222 ccw->count = 4; 223 223 ccw->cda = (__u32)(addr_t) DCTL_data; 224 + dctl_cqr->flags = erp->flags; 224 225 dctl_cqr->function = dasd_3990_erp_DCTL; 225 226 dctl_cqr->refers = erp; 226 227 dctl_cqr->startdev = device; ··· 1711 1710 ccw->cda = cpa; 1712 1711 1713 1712 /* fill erp related fields */ 1713 + erp->flags = default_erp->flags; 1714 1714 erp->function = dasd_3990_erp_action_1B_32; 1715 1715 erp->refers = default_erp->refers; 1716 1716 erp->startdev = device; ··· 2356 2354 ccw->cda = (long)(cqr->cpaddr); 2357 2355 } 2358 2356 2357 + erp->flags = cqr->flags; 2359 2358 erp->function = dasd_3990_erp_add_erp; 2360 2359 erp->refers = cqr; 2361 2360 erp->startdev = device;