diff options
Diffstat (limited to 'drivers/s390/block')
-rw-r--r-- | drivers/s390/block/dasd.c | 46 | ||||
-rw-r--r-- | drivers/s390/block/dasd_3370_erp.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_3990_erp.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_9336_erp.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_9343_erp.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_cmb.c | 2 | ||||
-rw-r--r-- | drivers/s390/block/dasd_devmap.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_diag.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_diag.h | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_eckd.h | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_erp.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_fba.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_fba.h | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_genhd.c | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_int.h | 1 | ||||
-rw-r--r-- | drivers/s390/block/dasd_ioctl.c | 11 | ||||
-rw-r--r-- | drivers/s390/block/dasd_proc.c | 1 |
18 files changed, 41 insertions, 33 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index ef4c687e7c01..abdf1ee633e7 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -7,7 +7,6 @@ | |||
7 | * Bugreports.to..: <Linux390@de.ibm.com> | 7 | * Bugreports.to..: <Linux390@de.ibm.com> |
8 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 | 8 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 |
9 | * | 9 | * |
10 | * $Revision: 1.172 $ | ||
11 | */ | 10 | */ |
12 | 11 | ||
13 | #include <linux/config.h> | 12 | #include <linux/config.h> |
@@ -675,11 +674,8 @@ dasd_term_IO(struct dasd_ccw_req * cqr) | |||
675 | rc = ccw_device_clear(device->cdev, (long) cqr); | 674 | rc = ccw_device_clear(device->cdev, (long) cqr); |
676 | switch (rc) { | 675 | switch (rc) { |
677 | case 0: /* termination successful */ | 676 | case 0: /* termination successful */ |
678 | if (cqr->retries > 0) { | 677 | cqr->retries--; |
679 | cqr->retries--; | 678 | cqr->status = DASD_CQR_CLEAR; |
680 | cqr->status = DASD_CQR_CLEAR; | ||
681 | } else | ||
682 | cqr->status = DASD_CQR_FAILED; | ||
683 | cqr->stopclk = get_clock(); | 679 | cqr->stopclk = get_clock(); |
684 | DBF_DEV_EVENT(DBF_DEBUG, device, | 680 | DBF_DEV_EVENT(DBF_DEBUG, device, |
685 | "terminate cqr %p successful", | 681 | "terminate cqr %p successful", |
@@ -1308,7 +1304,7 @@ dasd_tasklet(struct dasd_device * device) | |||
1308 | /* Now call the callback function of requests with final status */ | 1304 | /* Now call the callback function of requests with final status */ |
1309 | list_for_each_safe(l, n, &final_queue) { | 1305 | list_for_each_safe(l, n, &final_queue) { |
1310 | cqr = list_entry(l, struct dasd_ccw_req, list); | 1306 | cqr = list_entry(l, struct dasd_ccw_req, list); |
1311 | list_del(&cqr->list); | 1307 | list_del_init(&cqr->list); |
1312 | if (cqr->callback != NULL) | 1308 | if (cqr->callback != NULL) |
1313 | (cqr->callback)(cqr, cqr->callback_data); | 1309 | (cqr->callback)(cqr, cqr->callback_data); |
1314 | } | 1310 | } |
@@ -1393,7 +1389,9 @@ _wait_for_wakeup(struct dasd_ccw_req *cqr) | |||
1393 | 1389 | ||
1394 | device = cqr->device; | 1390 | device = cqr->device; |
1395 | spin_lock_irq(get_ccwdev_lock(device->cdev)); | 1391 | spin_lock_irq(get_ccwdev_lock(device->cdev)); |
1396 | rc = cqr->status == DASD_CQR_DONE || cqr->status == DASD_CQR_FAILED; | 1392 | rc = ((cqr->status == DASD_CQR_DONE || |
1393 | cqr->status == DASD_CQR_FAILED) && | ||
1394 | list_empty(&cqr->list)); | ||
1397 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); | 1395 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); |
1398 | return rc; | 1396 | return rc; |
1399 | } | 1397 | } |
@@ -1457,15 +1455,37 @@ dasd_sleep_on_interruptible(struct dasd_ccw_req * cqr) | |||
1457 | while (!finished) { | 1455 | while (!finished) { |
1458 | rc = wait_event_interruptible(wait_q, _wait_for_wakeup(cqr)); | 1456 | rc = wait_event_interruptible(wait_q, _wait_for_wakeup(cqr)); |
1459 | if (rc != -ERESTARTSYS) { | 1457 | if (rc != -ERESTARTSYS) { |
1460 | /* Request status is either done or failed. */ | 1458 | /* Request is final (done or failed) */ |
1461 | rc = (cqr->status == DASD_CQR_FAILED) ? -EIO : 0; | 1459 | rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO; |
1462 | break; | 1460 | break; |
1463 | } | 1461 | } |
1464 | spin_lock_irq(get_ccwdev_lock(device->cdev)); | 1462 | spin_lock_irq(get_ccwdev_lock(device->cdev)); |
1465 | if (cqr->status == DASD_CQR_IN_IO && | 1463 | switch (cqr->status) { |
1466 | device->discipline->term_IO(cqr) == 0) { | 1464 | case DASD_CQR_IN_IO: |
1467 | list_del(&cqr->list); | 1465 | /* terminate runnig cqr */ |
1466 | if (device->discipline->term_IO) { | ||
1467 | cqr->retries = -1; | ||
1468 | device->discipline->term_IO(cqr); | ||
1469 | /*nished = | ||
1470 | * wait (non-interruptible) for final status | ||
1471 | * because signal ist still pending | ||
1472 | */ | ||
1473 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); | ||
1474 | wait_event(wait_q, _wait_for_wakeup(cqr)); | ||
1475 | spin_lock_irq(get_ccwdev_lock(device->cdev)); | ||
1476 | rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO; | ||
1477 | finished = 1; | ||
1478 | } | ||
1479 | break; | ||
1480 | case DASD_CQR_QUEUED: | ||
1481 | /* request */ | ||
1482 | list_del_init(&cqr->list); | ||
1483 | rc = -EIO; | ||
1468 | finished = 1; | 1484 | finished = 1; |
1485 | break; | ||
1486 | default: | ||
1487 | /* cqr with 'non-interruptable' status - just wait */ | ||
1488 | break; | ||
1469 | } | 1489 | } |
1470 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); | 1490 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); |
1471 | } | 1491 | } |
diff --git a/drivers/s390/block/dasd_3370_erp.c b/drivers/s390/block/dasd_3370_erp.c index 84565c8f584e..1d11c2a9525d 100644 --- a/drivers/s390/block/dasd_3370_erp.c +++ b/drivers/s390/block/dasd_3370_erp.c | |||
@@ -4,7 +4,6 @@ | |||
4 | * Bugreports.to..: <Linux390@de.ibm.com> | 4 | * Bugreports.to..: <Linux390@de.ibm.com> |
5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 | 5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 |
6 | * | 6 | * |
7 | * $Revision: 1.9 $ | ||
8 | */ | 7 | */ |
9 | 8 | ||
10 | #define PRINTK_HEADER "dasd_erp(3370)" | 9 | #define PRINTK_HEADER "dasd_erp(3370)" |
diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c index c143ecb53d9d..4ee0f934e325 100644 --- a/drivers/s390/block/dasd_3990_erp.c +++ b/drivers/s390/block/dasd_3990_erp.c | |||
@@ -5,7 +5,6 @@ | |||
5 | * Bugreports.to..: <Linux390@de.ibm.com> | 5 | * Bugreports.to..: <Linux390@de.ibm.com> |
6 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000, 2001 | 6 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000, 2001 |
7 | * | 7 | * |
8 | * $Revision: 1.36 $ | ||
9 | */ | 8 | */ |
10 | 9 | ||
11 | #include <linux/timer.h> | 10 | #include <linux/timer.h> |
diff --git a/drivers/s390/block/dasd_9336_erp.c b/drivers/s390/block/dasd_9336_erp.c index 01e87170a3a2..dc861446d056 100644 --- a/drivers/s390/block/dasd_9336_erp.c +++ b/drivers/s390/block/dasd_9336_erp.c | |||
@@ -4,7 +4,6 @@ | |||
4 | * Bugreports.to..: <Linux390@de.ibm.com> | 4 | * Bugreports.to..: <Linux390@de.ibm.com> |
5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 | 5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 |
6 | * | 6 | * |
7 | * $Revision: 1.8 $ | ||
8 | */ | 7 | */ |
9 | 8 | ||
10 | #define PRINTK_HEADER "dasd_erp(9336)" | 9 | #define PRINTK_HEADER "dasd_erp(9336)" |
diff --git a/drivers/s390/block/dasd_9343_erp.c b/drivers/s390/block/dasd_9343_erp.c index 2a23b74faf3f..4a5b79569aaa 100644 --- a/drivers/s390/block/dasd_9343_erp.c +++ b/drivers/s390/block/dasd_9343_erp.c | |||
@@ -4,7 +4,6 @@ | |||
4 | * Bugreports.to..: <Linux390@de.ibm.com> | 4 | * Bugreports.to..: <Linux390@de.ibm.com> |
5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 | 5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 |
6 | * | 6 | * |
7 | * $Revision: 1.13 $ | ||
8 | */ | 7 | */ |
9 | 8 | ||
10 | #define PRINTK_HEADER "dasd_erp(9343)" | 9 | #define PRINTK_HEADER "dasd_erp(9343)" |
diff --git a/drivers/s390/block/dasd_cmb.c b/drivers/s390/block/dasd_cmb.c index 4f365bff275c..e88f73ee72ce 100644 --- a/drivers/s390/block/dasd_cmb.c +++ b/drivers/s390/block/dasd_cmb.c | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/s390/block/dasd_cmb.c ($Revision: 1.9 $) | ||
3 | * | ||
4 | * Linux on zSeries Channel Measurement Facility support | 2 | * Linux on zSeries Channel Measurement Facility support |
5 | * (dasd device driver interface) | 3 | * (dasd device driver interface) |
6 | * | 4 | * |
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c index caee16a3dc62..1629b27c48ab 100644 --- a/drivers/s390/block/dasd_devmap.c +++ b/drivers/s390/block/dasd_devmap.c | |||
@@ -11,7 +11,6 @@ | |||
11 | * functions may not be called from interrupt context. In particular | 11 | * functions may not be called from interrupt context. In particular |
12 | * dasd_get_device is a no-no from interrupt context. | 12 | * dasd_get_device is a no-no from interrupt context. |
13 | * | 13 | * |
14 | * $Revision: 1.43 $ | ||
15 | */ | 14 | */ |
16 | 15 | ||
17 | #include <linux/config.h> | 16 | #include <linux/config.h> |
diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c index ba80fdea7ebf..3f9d704d2657 100644 --- a/drivers/s390/block/dasd_diag.c +++ b/drivers/s390/block/dasd_diag.c | |||
@@ -6,7 +6,6 @@ | |||
6 | * Bugreports.to..: <Linux390@de.ibm.com> | 6 | * Bugreports.to..: <Linux390@de.ibm.com> |
7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
8 | * | 8 | * |
9 | * $Revision: 1.53 $ | ||
10 | */ | 9 | */ |
11 | 10 | ||
12 | #include <linux/config.h> | 11 | #include <linux/config.h> |
diff --git a/drivers/s390/block/dasd_diag.h b/drivers/s390/block/dasd_diag.h index a4f80bd735f1..38a4e55f8953 100644 --- a/drivers/s390/block/dasd_diag.h +++ b/drivers/s390/block/dasd_diag.h | |||
@@ -6,7 +6,6 @@ | |||
6 | * Bugreports.to..: <Linux390@de.ibm.com> | 6 | * Bugreports.to..: <Linux390@de.ibm.com> |
7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
8 | * | 8 | * |
9 | * $Revision: 1.9 $ | ||
10 | */ | 9 | */ |
11 | 10 | ||
12 | #define MDSK_WRITE_REQ 0x01 | 11 | #define MDSK_WRITE_REQ 0x01 |
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index 96eb48258580..822e2a265578 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -7,7 +7,6 @@ | |||
7 | * Bugreports.to..: <Linux390@de.ibm.com> | 7 | * Bugreports.to..: <Linux390@de.ibm.com> |
8 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 8 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
9 | * | 9 | * |
10 | * $Revision: 1.74 $ | ||
11 | */ | 10 | */ |
12 | 11 | ||
13 | #include <linux/config.h> | 12 | #include <linux/config.h> |
diff --git a/drivers/s390/block/dasd_eckd.h b/drivers/s390/block/dasd_eckd.h index b6888c68b224..bc3823d35223 100644 --- a/drivers/s390/block/dasd_eckd.h +++ b/drivers/s390/block/dasd_eckd.h | |||
@@ -5,7 +5,6 @@ | |||
5 | * Bugreports.to..: <Linux390@de.ibm.com> | 5 | * Bugreports.to..: <Linux390@de.ibm.com> |
6 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 6 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
7 | * | 7 | * |
8 | * $Revision: 1.10 $ | ||
9 | */ | 8 | */ |
10 | 9 | ||
11 | #ifndef DASD_ECKD_H | 10 | #ifndef DASD_ECKD_H |
diff --git a/drivers/s390/block/dasd_erp.c b/drivers/s390/block/dasd_erp.c index 7cb98d25f341..8fd71ab02ef0 100644 --- a/drivers/s390/block/dasd_erp.c +++ b/drivers/s390/block/dasd_erp.c | |||
@@ -7,7 +7,6 @@ | |||
7 | * Bugreports.to..: <Linux390@de.ibm.com> | 7 | * Bugreports.to..: <Linux390@de.ibm.com> |
8 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 | 8 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 |
9 | * | 9 | * |
10 | * $Revision: 1.14 $ | ||
11 | */ | 10 | */ |
12 | 11 | ||
13 | #include <linux/config.h> | 12 | #include <linux/config.h> |
diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c index 8ec75dc08e2c..91145698f8e9 100644 --- a/drivers/s390/block/dasd_fba.c +++ b/drivers/s390/block/dasd_fba.c | |||
@@ -4,7 +4,6 @@ | |||
4 | * Bugreports.to..: <Linux390@de.ibm.com> | 4 | * Bugreports.to..: <Linux390@de.ibm.com> |
5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
6 | * | 6 | * |
7 | * $Revision: 1.41 $ | ||
8 | */ | 7 | */ |
9 | 8 | ||
10 | #include <linux/config.h> | 9 | #include <linux/config.h> |
diff --git a/drivers/s390/block/dasd_fba.h b/drivers/s390/block/dasd_fba.h index 624f0402ee22..da1fa91fc01d 100644 --- a/drivers/s390/block/dasd_fba.h +++ b/drivers/s390/block/dasd_fba.h | |||
@@ -4,7 +4,6 @@ | |||
4 | * Bugreports.to..: <Linux390@de.ibm.com> | 4 | * Bugreports.to..: <Linux390@de.ibm.com> |
5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 5 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
6 | * | 6 | * |
7 | * $Revision: 1.6 $ | ||
8 | */ | 7 | */ |
9 | 8 | ||
10 | #ifndef DASD_FBA_H | 9 | #ifndef DASD_FBA_H |
diff --git a/drivers/s390/block/dasd_genhd.c b/drivers/s390/block/dasd_genhd.c index a601c9a33541..65dc844b975c 100644 --- a/drivers/s390/block/dasd_genhd.c +++ b/drivers/s390/block/dasd_genhd.c | |||
@@ -9,7 +9,6 @@ | |||
9 | * | 9 | * |
10 | * gendisk related functions for the dasd driver. | 10 | * gendisk related functions for the dasd driver. |
11 | * | 11 | * |
12 | * $Revision: 1.51 $ | ||
13 | */ | 12 | */ |
14 | 13 | ||
15 | #include <linux/config.h> | 14 | #include <linux/config.h> |
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h index e4b401500b01..c20af9874500 100644 --- a/drivers/s390/block/dasd_int.h +++ b/drivers/s390/block/dasd_int.h | |||
@@ -6,7 +6,6 @@ | |||
6 | * Bugreports.to..: <Linux390@de.ibm.com> | 6 | * Bugreports.to..: <Linux390@de.ibm.com> |
7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 | 7 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 |
8 | * | 8 | * |
9 | * $Revision: 1.68 $ | ||
10 | */ | 9 | */ |
11 | 10 | ||
12 | #ifndef DASD_INT_H | 11 | #ifndef DASD_INT_H |
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c index 9396fcacb8f8..fafeeae52675 100644 --- a/drivers/s390/block/dasd_ioctl.c +++ b/drivers/s390/block/dasd_ioctl.c | |||
@@ -7,8 +7,6 @@ | |||
7 | * Bugreports.to..: <Linux390@de.ibm.com> | 7 | * Bugreports.to..: <Linux390@de.ibm.com> |
8 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 | 8 | * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001 |
9 | * | 9 | * |
10 | * $Revision: 1.50 $ | ||
11 | * | ||
12 | * i/o controls for the dasd driver. | 10 | * i/o controls for the dasd driver. |
13 | */ | 11 | */ |
14 | #include <linux/config.h> | 12 | #include <linux/config.h> |
@@ -423,8 +421,15 @@ dasd_ioctl_information(struct block_device *bdev, int no, long args) | |||
423 | dasd_info->cu_model = cdev->id.cu_model; | 421 | dasd_info->cu_model = cdev->id.cu_model; |
424 | dasd_info->dev_type = cdev->id.dev_type; | 422 | dasd_info->dev_type = cdev->id.dev_type; |
425 | dasd_info->dev_model = cdev->id.dev_model; | 423 | dasd_info->dev_model = cdev->id.dev_model; |
426 | dasd_info->open_count = atomic_read(&device->open_count); | ||
427 | dasd_info->status = device->state; | 424 | dasd_info->status = device->state; |
425 | /* | ||
426 | * The open_count is increased for every opener, that includes | ||
427 | * the blkdev_get in dasd_scan_partitions. | ||
428 | * This must be hidden from user-space. | ||
429 | */ | ||
430 | dasd_info->open_count = atomic_read(&device->open_count); | ||
431 | if (!device->bdev) | ||
432 | dasd_info->open_count++; | ||
428 | 433 | ||
429 | /* | 434 | /* |
430 | * check if device is really formatted | 435 | * check if device is really formatted |
diff --git a/drivers/s390/block/dasd_proc.c b/drivers/s390/block/dasd_proc.c index fff9020d4886..2d5da3c75ca7 100644 --- a/drivers/s390/block/dasd_proc.c +++ b/drivers/s390/block/dasd_proc.c | |||
@@ -9,7 +9,6 @@ | |||
9 | * | 9 | * |
10 | * /proc interface for the dasd driver. | 10 | * /proc interface for the dasd driver. |
11 | * | 11 | * |
12 | * $Revision: 1.33 $ | ||
13 | */ | 12 | */ |
14 | 13 | ||
15 | #include <linux/config.h> | 14 | #include <linux/config.h> |