diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_sysfs_adapter.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_sysfs_adapter.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/s390/scsi/zfcp_sysfs_adapter.c b/drivers/s390/scsi/zfcp_sysfs_adapter.c index 1f2a8c21b731..a4cae60f69d4 100644 --- a/drivers/s390/scsi/zfcp_sysfs_adapter.c +++ b/drivers/s390/scsi/zfcp_sysfs_adapter.c | |||
@@ -85,6 +85,30 @@ zfcp_sysfs_port_add_store(struct device *dev, struct device_attribute *attr, con | |||
85 | static DEVICE_ATTR(port_add, S_IWUSR, NULL, zfcp_sysfs_port_add_store); | 85 | static DEVICE_ATTR(port_add, S_IWUSR, NULL, zfcp_sysfs_port_add_store); |
86 | 86 | ||
87 | /** | 87 | /** |
88 | * zfcp_sysfs_port_rescan - trigger manual port rescan | ||
89 | * @dev: pointer to belonging device | ||
90 | * @attr: pointer to struct device_attribute | ||
91 | * @buf: pointer to input buffer | ||
92 | * @count: number of bytes in buffer | ||
93 | */ | ||
94 | static ssize_t zfcp_sysfs_port_rescan_store(struct device *dev, | ||
95 | struct device_attribute *attr, | ||
96 | const char *buf, size_t count) | ||
97 | { | ||
98 | struct zfcp_adapter *adapter; | ||
99 | int ret; | ||
100 | |||
101 | adapter = dev_get_drvdata(dev); | ||
102 | if (atomic_test_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status)) | ||
103 | return -EBUSY; | ||
104 | |||
105 | ret = zfcp_scan_ports(adapter); | ||
106 | |||
107 | return ret ? ret : (ssize_t) count; | ||
108 | } | ||
109 | static DEVICE_ATTR(port_rescan, S_IWUSR, NULL, zfcp_sysfs_port_rescan_store); | ||
110 | |||
111 | /** | ||
88 | * zfcp_sysfs_port_remove_store - remove a port from sysfs tree | 112 | * zfcp_sysfs_port_remove_store - remove a port from sysfs tree |
89 | * @dev: pointer to belonging device | 113 | * @dev: pointer to belonging device |
90 | * @buf: pointer to input buffer | 114 | * @buf: pointer to input buffer |
@@ -214,6 +238,7 @@ static struct attribute *zfcp_adapter_attrs[] = { | |||
214 | &dev_attr_in_recovery.attr, | 238 | &dev_attr_in_recovery.attr, |
215 | &dev_attr_port_remove.attr, | 239 | &dev_attr_port_remove.attr, |
216 | &dev_attr_port_add.attr, | 240 | &dev_attr_port_add.attr, |
241 | &dev_attr_port_rescan.attr, | ||
217 | &dev_attr_peer_wwnn.attr, | 242 | &dev_attr_peer_wwnn.attr, |
218 | &dev_attr_peer_wwpn.attr, | 243 | &dev_attr_peer_wwpn.attr, |
219 | &dev_attr_peer_d_id.attr, | 244 | &dev_attr_peer_d_id.attr, |