diff options
author | Horst Hummel <horst.hummel@de.ibm.com> | 2006-08-24 07:22:36 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-08-24 07:22:36 -0400 |
commit | 8e79a441a4d8a34d64efe93add49b3eefca5cd1c (patch) | |
tree | 85f163962161f8c26881533a5376602f8f800e9d | |
parent | ef7d1b244fa6c94fb76d5f787b8629df64ea4046 (diff) |
[S390] dasd PAV enabling.
The subsystem check in the PAV code is incorrect, it enables PAV
per device instead of per subsystem.
Signed-off-by: Horst Hummel <horst.hummel@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | drivers/s390/block/dasd_devmap.c | 8 | ||||
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 14 |
2 files changed, 11 insertions, 11 deletions
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c index 9d0c6e1a0e66..9af02c79ce8a 100644 --- a/drivers/s390/block/dasd_devmap.c +++ b/drivers/s390/block/dasd_devmap.c | |||
@@ -54,11 +54,11 @@ struct dasd_devmap { | |||
54 | */ | 54 | */ |
55 | struct dasd_server_ssid_map { | 55 | struct dasd_server_ssid_map { |
56 | struct list_head list; | 56 | struct list_head list; |
57 | struct server_id { | 57 | struct system_id { |
58 | char vendor[4]; | 58 | char vendor[4]; |
59 | char serial[15]; | 59 | char serial[15]; |
60 | __u16 ssid; | ||
60 | } sid; | 61 | } sid; |
61 | __u16 ssid; | ||
62 | }; | 62 | }; |
63 | 63 | ||
64 | static struct list_head dasd_server_ssid_list; | 64 | static struct list_head dasd_server_ssid_list; |
@@ -904,14 +904,14 @@ dasd_set_uid(struct ccw_device *cdev, struct dasd_uid *uid) | |||
904 | return -ENOMEM; | 904 | return -ENOMEM; |
905 | strncpy(srv->sid.vendor, uid->vendor, sizeof(srv->sid.vendor) - 1); | 905 | strncpy(srv->sid.vendor, uid->vendor, sizeof(srv->sid.vendor) - 1); |
906 | strncpy(srv->sid.serial, uid->serial, sizeof(srv->sid.serial) - 1); | 906 | strncpy(srv->sid.serial, uid->serial, sizeof(srv->sid.serial) - 1); |
907 | srv->ssid = uid->ssid; | 907 | srv->sid.ssid = uid->ssid; |
908 | 908 | ||
909 | /* server is already contained ? */ | 909 | /* server is already contained ? */ |
910 | spin_lock(&dasd_devmap_lock); | 910 | spin_lock(&dasd_devmap_lock); |
911 | devmap->uid = *uid; | 911 | devmap->uid = *uid; |
912 | list_for_each_entry(tmp, &dasd_server_ssid_list, list) { | 912 | list_for_each_entry(tmp, &dasd_server_ssid_list, list) { |
913 | if (!memcmp(&srv->sid, &tmp->sid, | 913 | if (!memcmp(&srv->sid, &tmp->sid, |
914 | sizeof(struct dasd_server_ssid_map))) { | 914 | sizeof(struct system_id))) { |
915 | kfree(srv); | 915 | kfree(srv); |
916 | srv = NULL; | 916 | srv = NULL; |
917 | break; | 917 | break; |
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index 957ed5db98e4..b7a7fac3f7c3 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -607,7 +607,7 @@ dasd_eckd_psf_ssc(struct dasd_device *device) | |||
607 | * Valide storage server of current device. | 607 | * Valide storage server of current device. |
608 | */ | 608 | */ |
609 | static int | 609 | static int |
610 | dasd_eckd_validate_server(struct dasd_device *device) | 610 | dasd_eckd_validate_server(struct dasd_device *device, struct dasd_uid *uid) |
611 | { | 611 | { |
612 | int rc; | 612 | int rc; |
613 | 613 | ||
@@ -616,11 +616,11 @@ dasd_eckd_validate_server(struct dasd_device *device) | |||
616 | return 0; | 616 | return 0; |
617 | 617 | ||
618 | rc = dasd_eckd_psf_ssc(device); | 618 | rc = dasd_eckd_psf_ssc(device); |
619 | if (rc) | 619 | /* may be requested feature is not available on server, |
620 | /* may be requested feature is not available on server, | 620 | * therefore just report error and go ahead */ |
621 | * therefore just report error and go ahead */ | 621 | DEV_MESSAGE(KERN_INFO, device, |
622 | DEV_MESSAGE(KERN_INFO, device, | 622 | "PSF-SSC on storage subsystem %s.%s.%04x returned rc=%d", |
623 | "Perform Subsystem Function returned rc=%d", rc); | 623 | uid->vendor, uid->serial, uid->ssid, rc); |
624 | /* RE-Read Configuration Data */ | 624 | /* RE-Read Configuration Data */ |
625 | return dasd_eckd_read_conf(device); | 625 | return dasd_eckd_read_conf(device); |
626 | } | 626 | } |
@@ -666,7 +666,7 @@ dasd_eckd_check_characteristics(struct dasd_device *device) | |||
666 | return rc; | 666 | return rc; |
667 | rc = dasd_set_uid(device->cdev, &uid); | 667 | rc = dasd_set_uid(device->cdev, &uid); |
668 | if (rc == 1) /* new server found */ | 668 | if (rc == 1) /* new server found */ |
669 | rc = dasd_eckd_validate_server(device); | 669 | rc = dasd_eckd_validate_server(device, &uid); |
670 | if (rc) | 670 | if (rc) |
671 | return rc; | 671 | return rc; |
672 | 672 | ||