|  | @@ -74,6 +74,16 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 | 
		
	
		
			
			| 74 | 74 |   */
 | 
		
	
		
			
			| 75 | 75 |  #define SAN_DEFAULT_RETRIES 10
 | 
		
	
		
			
			| 76 | 76 |  
 | 
		
	
		
			
			|  | 77 | +/**
 | 
		
	
		
			
			|  | 78 | + * Delay between reopening attempts
 | 
		
	
		
			
			|  | 79 | + *
 | 
		
	
		
			
			|  | 80 | + * Some SAN targets will always accept connections instantly and
 | 
		
	
		
			
			|  | 81 | + * report a temporary unavailability by e.g. failing the TEST UNIT
 | 
		
	
		
			
			|  | 82 | + * READY command.  Avoid bombarding such targets by introducing a
 | 
		
	
		
			
			|  | 83 | + * small delay between attempts.
 | 
		
	
		
			
			|  | 84 | + */
 | 
		
	
		
			
			|  | 85 | +#define SAN_REOPEN_DELAY_SECS 5
 | 
		
	
		
			
			|  | 86 | +
 | 
		
	
		
			
			| 77 | 87 |  /** List of SAN devices */
 | 
		
	
		
			
			| 78 | 88 |  LIST_HEAD ( san_devices );
 | 
		
	
		
			
			| 79 | 89 |  
 | 
		
	
	
		
			
			|  | @@ -484,6 +494,10 @@ sandev_command ( struct san_device *sandev,
 | 
		
	
		
			
			| 484 | 494 |  		/* Reopen block device if applicable */
 | 
		
	
		
			
			| 485 | 495 |  		if ( sandev_needs_reopen ( sandev ) &&
 | 
		
	
		
			
			| 486 | 496 |  		     ( ( rc = sandev_reopen ( sandev ) ) != 0 ) ) {
 | 
		
	
		
			
			|  | 497 | +
 | 
		
	
		
			
			|  | 498 | +			/* Delay reopening attempts */
 | 
		
	
		
			
			|  | 499 | +			sleep_fixed ( SAN_REOPEN_DELAY_SECS );
 | 
		
	
		
			
			|  | 500 | +
 | 
		
	
		
			
			| 487 | 501 |  			continue;
 | 
		
	
		
			
			| 488 | 502 |  		}
 | 
		
	
		
			
			| 489 | 503 |  
 |