#include <lustre_handles.h>
#include <lustre/lustre_idl.h>
-
/* Adaptive Timeout stuff */
#define D_ADAPTTO D_OTHER
#define AT_BINS 4 /* "bin" means "N seconds of history" */
struct list_head imp_delayed_list;
struct obd_device *imp_obd;
- struct ptlrpc_sec *imp_sec;
- struct semaphore imp_sec_mutex;
- cfs_time_t imp_sec_expire;
cfs_waitq_t imp_recovery_waitq;
atomic_t imp_inflight;
spinlock_t imp_lock;
/* flags */
- unsigned long imp_no_timeout:1, /* timeouts are disabled */
- imp_invalid:1, /* evicted */
+ unsigned long imp_invalid:1, /* evicted */
imp_deactive:1, /* administratively disabled */
imp_replayable:1, /* try to recover the import */
imp_dlm_fake:1, /* don't run recovery (timeout instead) */
imp_pingable:1, /* pingable */
imp_resend_replay:1, /* resend for replay */
imp_recon_bk:1, /* turn off reconnect if all failovers fail */
- imp_last_recon:1; /* internally used by above */
+ imp_last_recon:1, /* internally used by above */
+ imp_force_reconnect:1; /* import must be reconnected instead of chouse new connection */
__u32 imp_connect_op;
struct obd_connect_data imp_connect_data;
__u64 imp_connect_flags_orig;
- int imp_connect_error;
__u32 imp_msg_magic;
__u32 imp_msghdr_flags; /* adjusted based on server capability */
time_t imp_last_reply_time; /* for health check */
};
-typedef void (*obd_import_callback)(struct obd_import *imp, void *closure,
- int event, void *event_arg, void *cb_data);
-
-struct obd_import_observer {
- struct list_head oio_chain;
- obd_import_callback oio_cb;
- void *oio_cb_data;
-};
-
-void class_observe_import(struct obd_import *imp, obd_import_callback cb,
- void *cb_data);
-void class_unobserve_import(struct obd_import *imp, obd_import_callback cb,
- void *cb_data);
-void class_notify_import_observers(struct obd_import *imp, int event,
- void *event_arg);
-
/* import.c */
static inline unsigned int at_est2timeout(unsigned int val)
{
static inline unsigned int at_timeout2est(unsigned int val)
{
/* restore estimate value from timeout: e=4/5(t-5) */
- LASSERT(val);
return (max((val << 2) / 5, 5U) - 4);
}
static inline int at_get(struct adaptive_timeout *at) {
return at->at_current;
}
-int at_add(struct adaptive_timeout *at, unsigned int val);
+int at_measured(struct adaptive_timeout *at, unsigned int val);
int import_at_get_index(struct obd_import *imp, int portal);
extern unsigned int at_max;
#define AT_OFF (at_max == 0)