From cc805833c5d0dc6759192e25ac41db7fa927787f Mon Sep 17 00:00:00 2001
From: liuy <liuy>
Date: Thu, 16 Aug 2007 04:41:52 +0000
Subject: [PATCH] Branch HEAD b=12932 i=green, shadow

set obd_health_check_timeout as 1.5x of obd_timeout
---
 lustre/ChangeLog             | 5 +++++
 lustre/include/obd_support.h | 8 +++++++-
 lustre/obdclass/class_obd.c  | 4 ++--
 lustre/obdclass/obd_config.c | 1 +
 4 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/lustre/ChangeLog b/lustre/ChangeLog
index 2691376c4a..7f7c51cc2c 100644
--- a/lustre/ChangeLog
+++ b/lustre/ChangeLog
@@ -106,6 +106,11 @@ Bugzilla   : 12836
 Description: lfs find on -1 stripe looping in lsm_lmm_verify_common()
 Details    : Avoid lov_verify_lmm_common() on directory with -1 stripe count.
 
+Severity   : major
+Bugzilla   : 12932
+Description: obd_health_check_timeout too short
+Details    : set obd_health_check_timeout as 1.5x of obd_timeout
+
 --------------------------------------------------------------------------------
 
 2007-08-10         Cluster File Systems, Inc. <info@clusterfs.com>
diff --git a/lustre/include/obd_support.h b/lustre/include/obd_support.h
index a2ddd27df2..0bc0904e2e 100644
--- a/lustre/include/obd_support.h
+++ b/lustre/include/obd_support.h
@@ -35,7 +35,6 @@ extern unsigned int obd_dump_on_eviction;
 extern unsigned int obd_timeout;          /* seconds */
 #define PING_INTERVAL max(obd_timeout / 4, 1U)
 #define RECONNECT_INTERVAL max(obd_timeout / 10, 10U)
-#define LDLM_TIMEOUT_DEFAULT 20
 extern unsigned int ldlm_timeout;
 extern unsigned int obd_health_check_timeout;
 extern unsigned int obd_sync_filter;
@@ -44,6 +43,13 @@ extern atomic_t obd_dirty_pages;
 extern cfs_waitq_t obd_race_waitq;
 extern int obd_race_state;
 
+/* Timeout definitions */
+#define LDLM_TIMEOUT_DEFAULT 20
+#define OBD_TIMEOUT_DEFAULT 100
+#define HEALTH_CHECK_COEF 3 / 2
+#define HEALTH_CHECK_TIMEOUT_DEFAULT (OBD_TIMEOUT_DEFAULT * HEALTH_CHECK_COEF)
+#define HEALTH_CHECK_TIMEOUT (obd_timeout * HEALTH_CHECK_COEF)
+
 #define OBD_FAIL_MDS                     0x100
 #define OBD_FAIL_MDS_HANDLE_UNPACK       0x101
 #define OBD_FAIL_MDS_GETATTR_NET         0x102
diff --git a/lustre/obdclass/class_obd.c b/lustre/obdclass/class_obd.c
index 1c0c4c77d8..a429e15046 100644
--- a/lustre/obdclass/class_obd.c
+++ b/lustre/obdclass/class_obd.c
@@ -61,9 +61,9 @@ unsigned int obd_fail_loc;
 unsigned int obd_debug_peer_on_timeout;
 unsigned int obd_dump_on_timeout;
 unsigned int obd_dump_on_eviction;
-unsigned int obd_timeout = 100; /* seconds */
+unsigned int obd_timeout = OBD_TIMEOUT_DEFAULT; /* seconds */
 unsigned int ldlm_timeout = LDLM_TIMEOUT_DEFAULT; /* seconds */
-unsigned int obd_health_check_timeout = 120; /* seconds */
+unsigned int obd_health_check_timeout = HEALTH_CHECK_TIMEOUT_DEFAULT; /* seconds */
 unsigned int obd_max_dirty_pages = 256;
 atomic_t obd_dirty_pages;
 
diff --git a/lustre/obdclass/obd_config.c b/lustre/obdclass/obd_config.c
index 676a7adc0e..f5284b58c2 100644
--- a/lustre/obdclass/obd_config.c
+++ b/lustre/obdclass/obd_config.c
@@ -741,6 +741,7 @@ int class_process_config(struct lustre_cfg *lcfg)
                 CDEBUG(D_IOCTL, "changing lustre timeout from %d to %d\n",
                        obd_timeout, lcfg->lcfg_num);
                 obd_timeout = max(lcfg->lcfg_num, 1U);
+                obd_health_check_timeout = HEALTH_CHECK_TIMEOUT;
                 GOTO(out, err = 0);
         }
         case LCFG_SET_UPCALL: {
-- 
GitLab