diff --git a/libcheckers/checkers.h b/libcheckers/checkers.h
index ac795ed..15bac1a 100644
--- a/libcheckers/checkers.h
+++ b/libcheckers/checkers.h
@@ -20,6 +20,21 @@ #define READSECTOR0  "readsector0"
 #define DEFAULT_CHECKER READSECTOR0
 
 /*
+ * Overloaded storage response time can be very long.
+ * SG_IO timouts after DEF_TIMEOUT milliseconds, and checkers interprets this
+ * as a path failure. multipathd then proactively evicts the path from the DM
+ * multipath table in this case.
+ *
+ * This generaly snow balls and ends up in full eviction and IO errors for end
+ * users. Bad. This may also cause SCSI bus resets, causing disruption for all
+ * local and external storage hardware users.
+ * 
+ * Provision a long timeout. Longer than any real-world application would cope
+ * with.
+ */
+#define DEF_TIMEOUT	300000
+
+/*
  * strings lengths
  */
 #define CHECKER_NAME_LEN 16
diff --git a/libcheckers/emc_clariion.c b/libcheckers/emc_clariion.c
index 33e91ca..a883e3d 100644
--- a/libcheckers/emc_clariion.c
+++ b/libcheckers/emc_clariion.c
@@ -57,7 +57,7 @@ int emc_clariion(struct checker * c)
 	io_hdr.dxferp = sense_buffer;
 	io_hdr.cmdp = inqCmdBlk;
 	io_hdr.sbp = sb;
-	io_hdr.timeout = 60000;
+	io_hdr.timeout = DEF_TIMEOUT;
 	io_hdr.pack_id = 0;
 	if (ioctl(c->fd, SG_IO, &io_hdr) < 0) {
 		MSG(c, "emc_clariion_checker: sending query command failed");
diff --git a/libcheckers/hp_sw.c b/libcheckers/hp_sw.c
index 509e9c4..b9731ff 100644
--- a/libcheckers/hp_sw.c
+++ b/libcheckers/hp_sw.c
@@ -19,7 +19,6 @@ #define TUR_CMD_LEN		6
 #define INQUIRY_CMDLEN		6
 #define INQUIRY_CMD		0x12
 #define SENSE_BUFF_LEN		32
-#define DEF_TIMEOUT		60000
 #define SCSI_CHECK_CONDITION	0x2
 #define SCSI_COMMAND_TERMINATED	0x22
 #define SG_ERR_DRIVER_SENSE	0x08
@@ -111,7 +110,7 @@ do_tur (int fd)
         io_hdr.dxfer_direction = SG_DXFER_NONE;
         io_hdr.cmdp = turCmdBlk;
         io_hdr.sbp = sense_buffer;
-        io_hdr.timeout = 20000;
+        io_hdr.timeout = DEF_TIMEOUT;
         io_hdr.pack_id = 0;
 
         if (ioctl(fd, SG_IO, &io_hdr) < 0)
diff --git a/libcheckers/readsector0.c b/libcheckers/readsector0.c
index e368fb4..b0acec9 100644
--- a/libcheckers/readsector0.c
+++ b/libcheckers/readsector0.c
@@ -16,7 +16,6 @@ #include "checkers.h"
 #include "../libmultipath/sg_include.h"
 
 #define SENSE_BUFF_LEN 32
-#define DEF_TIMEOUT 60000
 
 #define MSG_READSECTOR0_UP	"readsector0 checker reports path is up"
 #define MSG_READSECTOR0_DOWN	"readsector0 checker reports path is down"
diff --git a/libcheckers/tur.c b/libcheckers/tur.c
index d40a273..e79bc0a 100644
--- a/libcheckers/tur.c
+++ b/libcheckers/tur.c
@@ -51,7 +51,7 @@ tur (struct checker * c)
         io_hdr.dxfer_direction = SG_DXFER_NONE;
         io_hdr.cmdp = turCmdBlk;
         io_hdr.sbp = sense_buffer;
-        io_hdr.timeout = 20000;
+        io_hdr.timeout = DEF_TIMEOUT;
         io_hdr.pack_id = 0;
         if (ioctl(c->fd, SG_IO, &io_hdr) < 0) {
 		MSG(c, MSG_TUR_DOWN);
diff --git a/libmultipath/discovery.h b/libmultipath/discovery.h
index 65ecd41..ab62a59 100644
--- a/libmultipath/discovery.h
+++ b/libmultipath/discovery.h
@@ -5,7 +5,6 @@ #define SYSFS_PATH_SIZE 255
 #define INQUIRY_CMDLEN  6
 #define INQUIRY_CMD     0x12
 #define SENSE_BUFF_LEN  32
-#define DEF_TIMEOUT     60000
 #define RECOVERED_ERROR 0x01
 #define MX_ALLOC_LEN    255
 #define TUR_CMD_LEN     6
@@ -14,6 +13,10 @@ #ifndef BLKGETSIZE
 #define BLKGETSIZE      _IO(0x12,96)
 #endif
 
+#ifndef DEF_TIMEOUT
+#define DEF_TIMEOUT	300000
+#endif
+
 /*
  * exerpt from sg_err.h
  */
diff --git a/path_priority/pp_alua/rtpg.c b/path_priority/pp_alua/rtpg.c
index 9aea560..6922d9a 100644
--- a/path_priority/pp_alua/rtpg.c
+++ b/path_priority/pp_alua/rtpg.c
@@ -28,7 +28,7 @@ #include <scsi/sg.h>
 #include "rtpg.h"
 
 #define SENSE_BUFF_LEN  32
-#define DEF_TIMEOUT     60000
+#define DEF_TIMEOUT     300000
 
 /*
  * Macro used to print debug messaged.
diff --git a/path_priority/pp_balance_units/pp_balance_units.c b/path_priority/pp_balance_units/pp_balance_units.c
index 60b97d3..4ab6d75 100644
--- a/path_priority/pp_balance_units/pp_balance_units.c
+++ b/path_priority/pp_balance_units/pp_balance_units.c
@@ -38,7 +38,7 @@ #define FILE_NAME_SIZE 255
 #define INQUIRY_CMDLEN  6
 #define INQUIRY_CMD     0x12
 #define SENSE_BUFF_LEN  32
-#define DEF_TIMEOUT     60000
+#define DEF_TIMEOUT     300000
 #define RECOVERED_ERROR 0x01
 #define MX_ALLOC_LEN    255
 #define SCSI_CHECK_CONDITION    0x2
