|
@@ -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
|
|