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

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
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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,
};