|
@@ -828,6 +828,46 @@ dasd_discipline_show(struct device *dev, struct device_attribute *attr,
|
|
|
|
|
|
static DEVICE_ATTR(discipline, 0444, dasd_discipline_show, NULL);
|
|
static DEVICE_ATTR(discipline, 0444, dasd_discipline_show, NULL);
|
|
|
|
|
|
|
|
+static ssize_t
|
|
|
|
+dasd_device_status_show(struct device *dev, struct device_attribute *attr,
|
|
|
|
+ char *buf)
|
|
|
|
+{
|
|
|
|
+ struct dasd_device *device;
|
|
|
|
+ ssize_t len;
|
|
|
|
+
|
|
|
|
+ device = dasd_device_from_cdev(to_ccwdev(dev));
|
|
|
|
+ if (!IS_ERR(device)) {
|
|
|
|
+ switch (device->state) {
|
|
|
|
+ case DASD_STATE_NEW:
|
|
|
|
+ len = snprintf(buf, PAGE_SIZE, "new\n");
|
|
|
|
+ break;
|
|
|
|
+ case DASD_STATE_KNOWN:
|
|
|
|
+ len = snprintf(buf, PAGE_SIZE, "detected\n");
|
|
|
|
+ break;
|
|
|
|
+ case DASD_STATE_BASIC:
|
|
|
|
+ len = snprintf(buf, PAGE_SIZE, "basic\n");
|
|
|
|
+ break;
|
|
|
|
+ case DASD_STATE_UNFMT:
|
|
|
|
+ len = snprintf(buf, PAGE_SIZE, "unformatted\n");
|
|
|
|
+ break;
|
|
|
|
+ case DASD_STATE_READY:
|
|
|
|
+ len = snprintf(buf, PAGE_SIZE, "ready\n");
|
|
|
|
+ break;
|
|
|
|
+ case DASD_STATE_ONLINE:
|
|
|
|
+ len = snprintf(buf, PAGE_SIZE, "online\n");
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ len = snprintf(buf, PAGE_SIZE, "no stat\n");
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ dasd_put_device(device);
|
|
|
|
+ } else
|
|
|
|
+ len = snprintf(buf, PAGE_SIZE, "unknown\n");
|
|
|
|
+ return len;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static DEVICE_ATTR(status, 0444, dasd_device_status_show, NULL);
|
|
|
|
+
|
|
static ssize_t
|
|
static ssize_t
|
|
dasd_alias_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|
dasd_alias_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|
{
|
|
{
|
|
@@ -939,6 +979,7 @@ static DEVICE_ATTR(eer_enabled, 0644, dasd_eer_show, dasd_eer_store);
|
|
static struct attribute * dasd_attrs[] = {
|
|
static struct attribute * dasd_attrs[] = {
|
|
&dev_attr_readonly.attr,
|
|
&dev_attr_readonly.attr,
|
|
&dev_attr_discipline.attr,
|
|
&dev_attr_discipline.attr,
|
|
|
|
+ &dev_attr_status.attr,
|
|
&dev_attr_alias.attr,
|
|
&dev_attr_alias.attr,
|
|
&dev_attr_vendor.attr,
|
|
&dev_attr_vendor.attr,
|
|
&dev_attr_uid.attr,
|
|
&dev_attr_uid.attr,
|