File multipath-tools-emc-priority-increase of Package multipath-tools

commit 91b9ef5a1cf36c8420f85aa45daa8239384453dd
Author: Hannes Reinecke <hare@suse.de>
Date:   Fri Mar 20 10:30:04 2009 +0100

    Increase priority value for emc priority callout
    
    For non-default paths the emc priority callout should
    not return '0', as this will inhibit the daemon to switch
    paths.
    
    References: bnc#484529
    
    Signed-off-by: Hannes Reinecke <hare@suse.de>

diff --git a/libmultipath/prioritizers/emc.c b/libmultipath/prioritizers/emc.c
index c3301b2..dcf127b 100644
--- a/libmultipath/prioritizers/emc.c
+++ b/libmultipath/prioritizers/emc.c
@@ -58,17 +58,23 @@ int emc_clariion_prio(const char *dev, int fd)
 		/* Arraycommpath should be set to 1 */
 		|| (sense_buffer[30] & 0x04) != 0x04) {
 		pp_emc_log(0, "path not correctly configured for failover");
+		goto out;
 	}
 
 	if ( /* LUN operations should indicate normal operations */
 		sense_buffer[48] != 0x00) {
 		pp_emc_log(0, "path not available for normal operations");
+		goto out;
 	}
 
+	/* LUN state: unbound, bound, or owned */
+	ret = sense_buffer[4];
+
 	/* Is the default owner equal to this path? */
 	/* Note this will switch to the default priority group, even if
 	 * it is not the currently active one. */
-	ret = (sense_buffer[5] == sense_buffer[8]) ? 1 : 0;
+	if (sense_buffer[5] == sense_buffer[8])
+		ret+=2;
 
 out:
 	return(ret);
openSUSE Build Service is sponsored by