diff options
Diffstat (limited to 'drivers/s390/block/dasd_eckd.c')
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index 417b97cd3f94..a8ec0731609e 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -86,7 +86,8 @@ dasd_eckd_probe (struct ccw_device *cdev) | |||
86 | int ret; | 86 | int ret; |
87 | 87 | ||
88 | /* set ECKD specific ccw-device options */ | 88 | /* set ECKD specific ccw-device options */ |
89 | ret = ccw_device_set_options(cdev, CCWDEV_ALLOW_FORCE); | 89 | ret = ccw_device_set_options(cdev, CCWDEV_ALLOW_FORCE | |
90 | CCWDEV_DO_PATHGROUP | CCWDEV_DO_MULTIPATH); | ||
90 | if (ret) { | 91 | if (ret) { |
91 | DBF_EVENT(DBF_WARNING, | 92 | DBF_EVENT(DBF_WARNING, |
92 | "dasd_eckd_probe: could not set ccw-device options " | 93 | "dasd_eckd_probe: could not set ccw-device options " |
@@ -1090,6 +1091,15 @@ dasd_eckd_check_characteristics(struct dasd_device *device) | |||
1090 | struct dasd_block *block; | 1091 | struct dasd_block *block; |
1091 | int is_known, rc; | 1092 | int is_known, rc; |
1092 | 1093 | ||
1094 | if (!ccw_device_is_pathgroup(device->cdev)) { | ||
1095 | dev_warn(&device->cdev->dev, | ||
1096 | "A channel path group could not be established\n"); | ||
1097 | return -EIO; | ||
1098 | } | ||
1099 | if (!ccw_device_is_multipath(device->cdev)) { | ||
1100 | dev_info(&device->cdev->dev, | ||
1101 | "The DASD is not operating in multipath mode\n"); | ||
1102 | } | ||
1093 | private = (struct dasd_eckd_private *) device->private; | 1103 | private = (struct dasd_eckd_private *) device->private; |
1094 | if (!private) { | 1104 | if (!private) { |
1095 | private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA); | 1105 | private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA); |