forked from Minki/linux
[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>
This commit is contained in:
parent
ef7d1b244f
commit
8e79a441a4
@ -54,11 +54,11 @@ struct dasd_devmap {
|
||||
*/
|
||||
struct dasd_server_ssid_map {
|
||||
struct list_head list;
|
||||
struct server_id {
|
||||
struct system_id {
|
||||
char vendor[4];
|
||||
char serial[15];
|
||||
__u16 ssid;
|
||||
} sid;
|
||||
__u16 ssid;
|
||||
};
|
||||
|
||||
static struct list_head dasd_server_ssid_list;
|
||||
@ -904,14 +904,14 @@ dasd_set_uid(struct ccw_device *cdev, struct dasd_uid *uid)
|
||||
return -ENOMEM;
|
||||
strncpy(srv->sid.vendor, uid->vendor, sizeof(srv->sid.vendor) - 1);
|
||||
strncpy(srv->sid.serial, uid->serial, sizeof(srv->sid.serial) - 1);
|
||||
srv->ssid = uid->ssid;
|
||||
srv->sid.ssid = uid->ssid;
|
||||
|
||||
/* server is already contained ? */
|
||||
spin_lock(&dasd_devmap_lock);
|
||||
devmap->uid = *uid;
|
||||
list_for_each_entry(tmp, &dasd_server_ssid_list, list) {
|
||||
if (!memcmp(&srv->sid, &tmp->sid,
|
||||
sizeof(struct dasd_server_ssid_map))) {
|
||||
sizeof(struct system_id))) {
|
||||
kfree(srv);
|
||||
srv = NULL;
|
||||
break;
|
||||
|
@ -607,7 +607,7 @@ dasd_eckd_psf_ssc(struct dasd_device *device)
|
||||
* Valide storage server of current device.
|
||||
*/
|
||||
static int
|
||||
dasd_eckd_validate_server(struct dasd_device *device)
|
||||
dasd_eckd_validate_server(struct dasd_device *device, struct dasd_uid *uid)
|
||||
{
|
||||
int rc;
|
||||
|
||||
@ -616,11 +616,11 @@ dasd_eckd_validate_server(struct dasd_device *device)
|
||||
return 0;
|
||||
|
||||
rc = dasd_eckd_psf_ssc(device);
|
||||
if (rc)
|
||||
/* may be requested feature is not available on server,
|
||||
* therefore just report error and go ahead */
|
||||
DEV_MESSAGE(KERN_INFO, device,
|
||||
"Perform Subsystem Function returned rc=%d", rc);
|
||||
/* may be requested feature is not available on server,
|
||||
* therefore just report error and go ahead */
|
||||
DEV_MESSAGE(KERN_INFO, device,
|
||||
"PSF-SSC on storage subsystem %s.%s.%04x returned rc=%d",
|
||||
uid->vendor, uid->serial, uid->ssid, rc);
|
||||
/* RE-Read Configuration Data */
|
||||
return dasd_eckd_read_conf(device);
|
||||
}
|
||||
@ -666,7 +666,7 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
|
||||
return rc;
|
||||
rc = dasd_set_uid(device->cdev, &uid);
|
||||
if (rc == 1) /* new server found */
|
||||
rc = dasd_eckd_validate_server(device);
|
||||
rc = dasd_eckd_validate_server(device, &uid);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user