Author: sbruno
Date: Fri Apr  5 21:13:39 2013
New Revision: 249170
URL: http://svnweb.freebsd.org/changeset/base/249170

Log:
  Notify CAM on state* change to a logical volume not status.  This resolves
  the issues reported regarding camcontrol devlist not showing the rebuild
  states of volumes unless an explicit camcontrol rescan was executed.
  
  PR:   kern/171650
  Reviewed by:  sco...@freebsd.org
  Obtained from:        Yahoo! Inc.
  MFC after:    2 weeks

Modified:
  head/sys/dev/ciss/ciss.c

Modified: head/sys/dev/ciss/ciss.c
==============================================================================
--- head/sys/dev/ciss/ciss.c    Fri Apr  5 20:41:46 2013        (r249169)
+++ head/sys/dev/ciss/ciss.c    Fri Apr  5 21:13:39 2013        (r249170)
@@ -3959,7 +3959,8 @@ static void
 ciss_notify_logical(struct ciss_softc *sc, struct ciss_notify *cn)
 {
     struct ciss_ldrive *ld;
-    int                        ostatus, bus, target;
+    int                        bus, target;
+    int                        rescan_ld;
 
     debug_called(2);
 
@@ -3982,7 +3983,6 @@ ciss_notify_logical(struct ciss_softc *s
            /*
             * Update our idea of the drive's status.
             */
-           ostatus = 
ciss_decode_ldrive_status(cn->data.logical_status.previous_state);
            ld->cl_status = 
ciss_decode_ldrive_status(cn->data.logical_status.new_state);
            if (ld->cl_lstatus != NULL)
                ld->cl_lstatus->status = cn->data.logical_status.new_state;
@@ -3990,7 +3990,9 @@ ciss_notify_logical(struct ciss_softc *s
            /*
             * Have CAM rescan the drive if its status has changed.
             */
-           if (ostatus != ld->cl_status) {
+            rescan_ld = (cn->data.logical_status.previous_state !=
+                         cn->data.logical_status.new_state) ? 1 : 0;
+           if (rescan_ld) {
                ld->cl_update = 1;
                ciss_notify_rescan_logical(sc);
            }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to