|
@@ -27,6 +27,16 @@ static ssize_t zfcp_sysfs_##_feat##_##_name##_show(struct device *dev, \
|
|
|
static ZFCP_DEV_ATTR(_feat, _name, S_IRUGO, \
|
|
|
zfcp_sysfs_##_feat##_##_name##_show, NULL);
|
|
|
|
|
|
+#define ZFCP_DEFINE_ATTR_CONST(_feat, _name, _format, _value) \
|
|
|
+static ssize_t zfcp_sysfs_##_feat##_##_name##_show(struct device *dev, \
|
|
|
+ struct device_attribute *at,\
|
|
|
+ char *buf) \
|
|
|
+{ \
|
|
|
+ return sprintf(buf, _format, _value); \
|
|
|
+} \
|
|
|
+static ZFCP_DEV_ATTR(_feat, _name, S_IRUGO, \
|
|
|
+ zfcp_sysfs_##_feat##_##_name##_show, NULL);
|
|
|
+
|
|
|
#define ZFCP_DEFINE_A_ATTR(_name, _format, _value) \
|
|
|
static ssize_t zfcp_sysfs_adapter_##_name##_show(struct device *dev, \
|
|
|
struct device_attribute *at,\
|
|
@@ -75,6 +85,8 @@ ZFCP_DEFINE_ATTR(zfcp_unit, unit, in_recovery, "%d\n",
|
|
|
ZFCP_DEFINE_ATTR(zfcp_unit, unit, access_denied, "%d\n",
|
|
|
(zfcp_unit_sdev_status(unit) &
|
|
|
ZFCP_STATUS_COMMON_ACCESS_DENIED) != 0);
|
|
|
+ZFCP_DEFINE_ATTR_CONST(unit, access_shared, "%d\n", 0);
|
|
|
+ZFCP_DEFINE_ATTR_CONST(unit, access_readonly, "%d\n", 0);
|
|
|
|
|
|
static ssize_t zfcp_sysfs_port_failed_show(struct device *dev,
|
|
|
struct device_attribute *attr,
|
|
@@ -347,6 +359,8 @@ static struct attribute *zfcp_unit_attrs[] = {
|
|
|
&dev_attr_unit_in_recovery.attr,
|
|
|
&dev_attr_unit_status.attr,
|
|
|
&dev_attr_unit_access_denied.attr,
|
|
|
+ &dev_attr_unit_access_shared.attr,
|
|
|
+ &dev_attr_unit_access_readonly.attr,
|
|
|
NULL
|
|
|
};
|
|
|
static struct attribute_group zfcp_unit_attr_group = {
|