mirror of https://gitee.com/openkylin/linux.git
181d95229b
To set a dasd online dasd_change_state is called twice. The first cycle will schedule initial analysis of the device, set the rc to -EAGAIN and will not touch the device state any more. The initial analysis will in turn call dasd_change_state to increase the state to the final DASD_STATE_ONLINE. If the dasd_change_state on the second thread outruns the other one both finish with the state set to DASD_STATE_ONLINE and the device refcount will be decreased by 2. Fix this by leaving dasd_change_state on rc == -EAGAIN so that the refcount will always be decreased by 1. Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
dasd.c | ||
dasd_3990_erp.c | ||
dasd_alias.c | ||
dasd_devmap.c | ||
dasd_diag.c | ||
dasd_diag.h | ||
dasd_eckd.c | ||
dasd_eckd.h | ||
dasd_eer.c | ||
dasd_erp.c | ||
dasd_fba.c | ||
dasd_fba.h | ||
dasd_genhd.c | ||
dasd_int.h | ||
dasd_ioctl.c | ||
dasd_proc.c | ||
dcssblk.c | ||
xpram.c |