Merge commit 'origin/master' into next
[sfrench/cifs-2.6.git] / drivers / s390 / block / dasd_alias.c
index 20676cdef4a519802b1d1a605d637f21ae64319b..5b7bbc87593b3b5172504d32dddbbfe11aac11b4 100644 (file)
@@ -5,6 +5,8 @@
  * Author(s): Stefan Weinhuber <wein@de.ibm.com>
  */
 
+#define KMSG_COMPONENT "dasd"
+
 #include <linux/list.h>
 #include <asm/ebcdic.h>
 #include "dasd_int.h"
@@ -503,7 +505,7 @@ static void lcu_update_work(struct work_struct *work)
         */
        spin_lock_irqsave(&lcu->lock, flags);
        if (rc || (lcu->flags & NEED_UAC_UPDATE)) {
-               DEV_MESSAGE(KERN_WARNING, device, "could not update"
+               DBF_DEV_EVENT(DBF_WARNING, device, "could not update"
                            " alias data in lcu (rc = %d), retry later", rc);
                schedule_delayed_work(&lcu->ruac_data.dwork, 30*HZ);
        } else {
@@ -646,14 +648,16 @@ static int reset_summary_unit_check(struct alias_lcu *lcu,
 {
        struct dasd_ccw_req *cqr;
        int rc = 0;
+       struct ccw1 *ccw;
 
        cqr = lcu->rsu_cqr;
        strncpy((char *) &cqr->magic, "ECKD", 4);
        ASCEBC((char *) &cqr->magic, 4);
-       cqr->cpaddr->cmd_code = DASD_ECKD_CCW_RSCK;
-       cqr->cpaddr->flags = 0 ;
-       cqr->cpaddr->count = 16;
-       cqr->cpaddr->cda = (__u32)(addr_t) cqr->data;
+       ccw = cqr->cpaddr;
+       ccw->cmd_code = DASD_ECKD_CCW_RSCK;
+       ccw->flags = 0 ;
+       ccw->count = 16;
+       ccw->cda = (__u32)(addr_t) cqr->data;
        ((char *)cqr->data)[0] = reason;
 
        clear_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags);
@@ -855,16 +859,25 @@ void dasd_alias_handle_summary_unit_check(struct dasd_device *device,
        struct alias_lcu *lcu;
        char reason;
        struct dasd_eckd_private *private;
+       char *sense;
 
        private = (struct dasd_eckd_private *) device->private;
 
-       reason = irb->ecw[8];
-       DEV_MESSAGE(KERN_WARNING, device, "%s %x",
-                   "eckd handle summary unit check: reason", reason);
+       sense = dasd_get_sense(irb);
+       if (sense) {
+               reason = sense[8];
+               DBF_DEV_EVENT(DBF_NOTICE, device, "%s %x",
+                           "eckd handle summary unit check: reason", reason);
+       } else {
+               DBF_DEV_EVENT(DBF_WARNING, device, "%s",
+                           "eckd handle summary unit check:"
+                           " no reason code available");
+               return;
+       }
 
        lcu = private->lcu;
        if (!lcu) {
-               DEV_MESSAGE(KERN_WARNING, device, "%s",
+               DBF_DEV_EVENT(DBF_WARNING, device, "%s",
                            "device not ready to handle summary"
                            " unit check (no lcu structure)");
                return;
@@ -877,7 +890,7 @@ void dasd_alias_handle_summary_unit_check(struct dasd_device *device,
         * the next interrupt on a different device
         */
        if (list_empty(&device->alias_list)) {
-               DEV_MESSAGE(KERN_WARNING, device, "%s",
+               DBF_DEV_EVENT(DBF_WARNING, device, "%s",
                            "device is in offline processing,"
                            " don't do summary unit check handling");
                spin_unlock(&lcu->lock);
@@ -885,7 +898,7 @@ void dasd_alias_handle_summary_unit_check(struct dasd_device *device,
        }
        if (lcu->suc_data.device) {
                /* already scheduled or running */
-               DEV_MESSAGE(KERN_WARNING, device, "%s",
+               DBF_DEV_EVENT(DBF_WARNING, device, "%s",
                            "previous instance of summary unit check worker"
                            " still pending");
                spin_unlock(&lcu->lock);