RETURN(0);
}
-void ptlrpc_update_next_ping(struct obd_import *imp)
+void ptlrpc_update_next_ping(struct obd_import *imp, int soon)
{
#ifdef ENABLE_PINGER
- int time = PING_INTERVAL;
+ int time = soon ? PING_INTERVAL_SHORT : PING_INTERVAL;
if (imp->imp_state == LUSTRE_IMP_DISCON) {
int dtime = max_t(int, CONNECTION_SWITCH_MIN,
AT_OFF ? 0 :
cfs_time_after(imp->imp_next_ping,
cfs_time_add(this_ping,
cfs_time_seconds(PING_INTERVAL))))
- ptlrpc_update_next_ping(imp);
+ ptlrpc_update_next_ping(imp, 0);
}
cfs_mutex_up(&pinger_sem);
/* update memory usage info */
void ptlrpc_pinger_sending_on_import(struct obd_import *imp)
{
- ptlrpc_update_next_ping(imp);
+ ptlrpc_update_next_ping(imp, 0);
+}
+
+void ptlrpc_pinger_commit_expected(struct obd_import *imp)
+{
+ ptlrpc_update_next_ping(imp, 1);
}
int ptlrpc_pinger_add_import(struct obd_import *imp)
imp->imp_obd->obd_uuid.uuid, obd2cli_tgt(imp->imp_obd));
/* if we add to pinger we want recovery on this import */
imp->imp_obd->obd_no_recov = 0;
- ptlrpc_update_next_ping(imp);
+ ptlrpc_update_next_ping(imp, 0);
/* XXX sort, blah blah */
cfs_list_add_tail(&imp->imp_pinger_chain, &pinger_imports);
class_import_get(imp);
obd = class_exp2obd(exp);
if (cfs_list_empty(&obd->obd_evict_list)) {
- class_incref(obd, __FUNCTION__, cfs_current());
+ class_incref(obd, "evictor", obd);
cfs_list_add(&obd->obd_evict_list, &pet_list);
}
cfs_spin_unlock(&pet_lock);
cfs_list_del_init(&obd->obd_evict_list);
cfs_spin_unlock(&pet_lock);
- class_decref(obd, __FUNCTION__, cfs_current());
+ class_decref(obd, "evictor", obd);
}
CDEBUG(D_HA, "Exiting Ping Evictor\n");
{
#ifdef ENABLE_PINGER
cfs_mutex_down(&pinger_sem);
- ptlrpc_update_next_ping(imp);
+ ptlrpc_update_next_ping(imp, 0);
if (pinger_args.pd_set == NULL &&
cfs_time_before(imp->imp_next_ping, pinger_args.pd_next_ping)) {
CDEBUG(D_HA, "set next ping to "CFS_TIME_T"(cur "CFS_TIME_T")\n",
#endif
}
+void ptlrpc_pinger_commit_expected(struct obd_import *imp)
+{
+#ifdef ENABLE_PINGER
+ cfs_mutex_down(&pinger_sem);
+ ptlrpc_update_next_ping(imp, 1);
+ if (pinger_args.pd_set == NULL &&
+ cfs_time_before(imp->imp_next_ping, pinger_args.pd_next_ping)) {
+ CDEBUG(D_HA,"set next ping to "CFS_TIME_T"(cur "CFS_TIME_T")\n",
+ imp->imp_next_ping, cfs_time_current());
+ pinger_args.pd_next_ping = imp->imp_next_ping;
+ }
+ cfs_mutex_up(&pinger_sem);
+#endif
+}
+
int ptlrpc_add_timeout_client(int time, enum timeout_event event,
timeout_cb_t cb, void *data,
cfs_list_t *obd_list)