Commit cec0c58d authored by Vineeth Vijayan's avatar Vineeth Vijayan Committed by Vasily Gorbik

s390/cio: add rescan functionality on channel subsystem

This patch introduces a new rescan sys-interface for channel-subsystem.
The rescan interface allows the user to invoke an evaluation of all
subchannels defined in the I/O configuration.

The new rescan interface can be found at /sys/devices/css0/rescan
and can be triggered by,

echo > /sys/devices/css0/rescan

Writing to this interface triggers subchannel evaluation. The write
request completes only after scan-related work has completed

This user-invoked subchannel evaluation allows manual recovery in error
situations such as:
 - restart of device discovery after resolution of temporary device
   error
 - inconsistent OS view of subchannel state due to missing state-change
   interrupts (CRWs)
Signed-off-by: default avatarVineeth Vijayan <vneethv@linux.ibm.com>
Reviewed-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent c78d0c74
......@@ -886,6 +886,18 @@ static ssize_t real_cssid_show(struct device *dev, struct device_attribute *a,
}
static DEVICE_ATTR_RO(real_cssid);
static ssize_t rescan_store(struct device *dev, struct device_attribute *a,
const char *buf, size_t count)
{
CIO_TRACE_EVENT(4, "usr-rescan");
css_schedule_eval_all();
css_complete_work();
return count;
}
static DEVICE_ATTR_WO(rescan);
static ssize_t cm_enable_show(struct device *dev, struct device_attribute *a,
char *buf)
{
......@@ -932,6 +944,7 @@ static umode_t cm_enable_mode(struct kobject *kobj, struct attribute *attr,
static struct attribute *cssdev_attrs[] = {
&dev_attr_real_cssid.attr,
&dev_attr_rescan.attr,
NULL,
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment