[S390] dasd: fix online/offline race
authorStefan Haberland <stefan.haberland@de.ibm.com>
Fri, 26 Feb 2010 21:37:46 +0000 (22:37 +0100)
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>
Fri, 26 Feb 2010 21:37:32 +0000 (22:37 +0100)
commit9eb251225ab4dbea3119cfcf4c5194eed223a740
tree6305782cf36aee2949b7a6d1661db24ef618e2ce
parent22e0a0467292222214d1974d9bc2664a6c05980d
[S390] dasd: fix online/offline race

Setting a DASD online and offline in quick succession may cause
a kernel panic or let the chhccwdev command wait forever.
The Online process is split into two parts. After the first part
is finished the offline process may be called. This may result
in a situation where the second online processing part tries to
set the DASD offline as well.
Use a mutex to protect online and offline against each other.
Also correct some checking.

Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/block/dasd.c
drivers/s390/block/dasd_genhd.c
drivers/s390/block/dasd_int.h