Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e79a441 authored by Horst Hummel's avatar Horst Hummel Committed by Martin Schwidefsky
Browse files

[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: default avatarHorst Hummel <horst.hummel@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent ef7d1b24
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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];
	} sid;
		__u16 ssid;
	} sid;
};

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;
+7 −7
Original line number Diff line number Diff line
@@ -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);
		    "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;