Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / s390 / scsi / zfcp_sysfs_port.c
index 11a27c1..f401d42 100644 (file)
@@ -10,6 +10,8 @@
  * Authors:
  *      Martin Peschke <mpeschke@de.ibm.com>
  *     Heiko Carstens <heiko.carstens@de.ibm.com>
+ *      Andreas Herrmann <aherrman@de.ibm.com>
+ *      Volker Sameske <sameske@de.ibm.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -26,8 +28,6 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#define ZFCP_SYSFS_PORT_C_REVISION "$Revision: 1.41 $"
-
 #include "zfcp_ext.h"
 
 #define ZFCP_LOG_AREA                   ZFCP_LOG_AREA_CONFIG
@@ -51,7 +51,7 @@ zfcp_sysfs_port_release(struct device *dev)
  * Generates attributes for a port.
  */
 #define ZFCP_DEFINE_PORT_ATTR(_name, _format, _value)                    \
-static ssize_t zfcp_sysfs_port_##_name##_show(struct device *dev,        \
+static ssize_t zfcp_sysfs_port_##_name##_show(struct device *dev, struct device_attribute *attr,        \
                                               char *buf)                 \
 {                                                                        \
         struct zfcp_port *port;                                          \
@@ -63,9 +63,10 @@ static ssize_t zfcp_sysfs_port_##_name##_show(struct device *dev,        \
 static DEVICE_ATTR(_name, S_IRUGO, zfcp_sysfs_port_##_name##_show, NULL);
 
 ZFCP_DEFINE_PORT_ATTR(status, "0x%08x\n", atomic_read(&port->status));
-ZFCP_DEFINE_PORT_ATTR(wwnn, "0x%016llx\n", port->wwnn);
-ZFCP_DEFINE_PORT_ATTR(d_id, "0x%06x\n", port->d_id);
-ZFCP_DEFINE_PORT_ATTR(scsi_id, "0x%x\n", port->scsi_id);
+ZFCP_DEFINE_PORT_ATTR(in_recovery, "%d\n", atomic_test_mask
+                     (ZFCP_STATUS_COMMON_ERP_INUSE, &port->status));
+ZFCP_DEFINE_PORT_ATTR(access_denied, "%d\n", atomic_test_mask
+                     (ZFCP_STATUS_COMMON_ACCESS_DENIED, &port->status));
 
 /**
  * zfcp_sysfs_unit_add_store - add a unit to sysfs tree
@@ -76,7 +77,7 @@ ZFCP_DEFINE_PORT_ATTR(scsi_id, "0x%x\n", port->scsi_id);
  * Store function of the "unit_add" attribute of a port.
  */
 static ssize_t
-zfcp_sysfs_unit_add_store(struct device *dev, const char *buf, size_t count)
+zfcp_sysfs_unit_add_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
 {
        fcp_lun_t fcp_lun;
        char *endp;
@@ -107,7 +108,7 @@ zfcp_sysfs_unit_add_store(struct device *dev, const char *buf, size_t count)
        zfcp_unit_put(unit);
  out:
        up(&zfcp_data.config_sema);
-       return retval ? retval : count;
+       return retval ? retval : (ssize_t) count;
 }
 
 static DEVICE_ATTR(unit_add, S_IWUSR, NULL, zfcp_sysfs_unit_add_store);
@@ -119,7 +120,7 @@ static DEVICE_ATTR(unit_add, S_IWUSR, NULL, zfcp_sysfs_unit_add_store);
  * @count: number of bytes in buffer
  */
 static ssize_t
-zfcp_sysfs_unit_remove_store(struct device *dev, const char *buf, size_t count)
+zfcp_sysfs_unit_remove_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
 {
        struct zfcp_port *port;
        struct zfcp_unit *unit;
@@ -164,7 +165,7 @@ zfcp_sysfs_unit_remove_store(struct device *dev, const char *buf, size_t count)
        zfcp_unit_dequeue(unit);
  out:
        up(&zfcp_data.config_sema);
-       return retval ? retval : count;
+       return retval ? retval : (ssize_t) count;
 }
 
 static DEVICE_ATTR(unit_remove, S_IWUSR, NULL, zfcp_sysfs_unit_remove_store);
@@ -180,7 +181,7 @@ static DEVICE_ATTR(unit_remove, S_IWUSR, NULL, zfcp_sysfs_unit_remove_store);
  * started for the belonging port.
  */
 static ssize_t
-zfcp_sysfs_port_failed_store(struct device *dev, const char *buf, size_t count)
+zfcp_sysfs_port_failed_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
 {
        struct zfcp_port *port;
        unsigned int val;
@@ -206,7 +207,7 @@ zfcp_sysfs_port_failed_store(struct device *dev, const char *buf, size_t count)
        zfcp_erp_wait(port->adapter);
  out:
        up(&zfcp_data.config_sema);
-       return retval ? retval : count;
+       return retval ? retval : (ssize_t) count;
 }
 
 /**
@@ -218,7 +219,7 @@ zfcp_sysfs_port_failed_store(struct device *dev, const char *buf, size_t count)
  * "0" if port is working, otherwise "1".
  */
 static ssize_t
-zfcp_sysfs_port_failed_show(struct device *dev, char *buf)
+zfcp_sysfs_port_failed_show(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct zfcp_port *port;
 
@@ -232,29 +233,6 @@ zfcp_sysfs_port_failed_show(struct device *dev, char *buf)
 static DEVICE_ATTR(failed, S_IWUSR | S_IRUGO, zfcp_sysfs_port_failed_show,
                   zfcp_sysfs_port_failed_store);
 
-/**
- * zfcp_sysfs_port_in_recovery_show - recovery state of port
- * @dev: pointer to belonging device
- * @buf: pointer to input buffer
- * 
- * Show function of "in_recovery" attribute of port. Will be
- * "0" if no error recovery is pending for port, otherwise "1".
- */
-static ssize_t
-zfcp_sysfs_port_in_recovery_show(struct device *dev, char *buf)
-{
-       struct zfcp_port *port;
-
-       port = dev_get_drvdata(dev);
-       if (atomic_test_mask(ZFCP_STATUS_COMMON_ERP_INUSE, &port->status))
-               return sprintf(buf, "1\n");
-       else
-               return sprintf(buf, "0\n");
-}
-
-static DEVICE_ATTR(in_recovery, S_IRUGO, zfcp_sysfs_port_in_recovery_show,
-                  NULL);
-
 /**
  * zfcp_port_common_attrs
  * sysfs attributes that are common for all kind of fc ports.
@@ -263,8 +241,7 @@ static struct attribute *zfcp_port_common_attrs[] = {
        &dev_attr_failed.attr,
        &dev_attr_in_recovery.attr,
        &dev_attr_status.attr,
-       &dev_attr_wwnn.attr,
-       &dev_attr_d_id.attr,
+       &dev_attr_access_denied.attr,
        NULL
 };
 
@@ -279,7 +256,6 @@ static struct attribute_group zfcp_port_common_attr_group = {
 static struct attribute *zfcp_port_no_ns_attrs[] = {
        &dev_attr_unit_add.attr,
        &dev_attr_unit_remove.attr,
-       &dev_attr_scsi_id.attr,
        NULL
 };
 
@@ -300,7 +276,7 @@ zfcp_sysfs_port_create_files(struct device *dev, u32 flags)
 
        retval = sysfs_create_group(&dev->kobj, &zfcp_port_common_attr_group);
 
-       if ((flags & ZFCP_STATUS_PORT_NAMESERVER) || retval)
+       if ((flags & ZFCP_STATUS_PORT_WKA) || retval)
                return retval;
 
        retval = sysfs_create_group(&dev->kobj, &zfcp_port_no_ns_attr_group);
@@ -320,7 +296,7 @@ void
 zfcp_sysfs_port_remove_files(struct device *dev, u32 flags)
 {
        sysfs_remove_group(&dev->kobj, &zfcp_port_common_attr_group);
-       if (!(flags & ZFCP_STATUS_PORT_NAMESERVER))
+       if (!(flags & ZFCP_STATUS_PORT_WKA))
                sysfs_remove_group(&dev->kobj, &zfcp_port_no_ns_attr_group);
 }