#include "ptlrpc_internal.h"
struct semaphore pinger_sem;
-static struct list_head pinger_imports = CFS_LIST_HEAD_INIT(pinger_imports);
+static CFS_LIST_HEAD(pinger_imports);
int ptlrpc_ping(struct obd_import *imp)
{
struct ptlrpc_request *req;
- int rc = 0;
ENTRY;
- req = ptlrpc_prep_req(imp, LUSTRE_OBD_VERSION, OBD_PING, 1, NULL, NULL);
- if (req) {
- DEBUG_REQ(D_INFO, req, "pinging %s->%s",
- imp->imp_obd->obd_uuid.uuid,
- obd2cli_tgt(imp->imp_obd));
- req->rq_no_resend = req->rq_no_delay = 1;
- ptlrpc_req_set_repsize(req, 1, NULL);
- req->rq_timeout = PING_INTERVAL;
- ptlrpcd_add_req(req);
- } else {
+ req = ptlrpc_request_alloc_pack(imp, &RQF_OBD_PING, LUSTRE_OBD_VERSION,
+ OBD_PING);
+ if (req == NULL) {
CERROR("OOM trying to ping %s->%s\n",
imp->imp_obd->obd_uuid.uuid,
obd2cli_tgt(imp->imp_obd));
- rc = -ENOMEM;
+ RETURN(-ENOMEM);
}
- RETURN(rc);
+ DEBUG_REQ(D_INFO, req, "pinging %s->%s",
+ imp->imp_obd->obd_uuid.uuid, obd2cli_tgt(imp->imp_obd));
+ req->rq_no_resend = req->rq_no_delay = 1;
+ ptlrpc_request_set_replen(req);
+ req->rq_timeout = PING_INTERVAL;
+ ptlrpcd_add_req(req);
+
+ RETURN(0);
}
void ptlrpc_update_next_ping(struct obd_import *imp)
ptlrpc_update_next_ping(imp);
}
mutex_up(&pinger_sem);
+ /* update memory usage info */
+ obd_update_maxusage();
/* Wait until the next ping time, or until we're stopped. */
time_to_next_ping = cfs_time_sub(cfs_time_add(this_ping,
int ping_evictor_wake(struct obd_export *exp)
{
spin_lock(&pet_lock);
- if (pet_exp) {
+ if (pet_exp || (pet_state != PET_READY)) {
/* eventually the new obd will call here again. */
spin_unlock(&pet_lock);
return 1;
obd = pet_exp->exp_obd;
spin_unlock(&pet_lock);
- expire_time = CURRENT_SECONDS - (3 * obd_timeout / 2);
+ expire_time = cfs_time_current_sec() - (3 * obd_timeout / 2);
CDEBUG(D_HA, "evicting all exports of obd %s older than %ld\n",
obd->obd_name, expire_time);
obd->obd_name,
obd_uuid2str(&exp->exp_client_uuid),
obd_export_nid2str(exp),
- (long)(CURRENT_SECONDS -
+ (long)(cfs_time_current_sec() -
exp->exp_last_request_time),
- exp, (long)CURRENT_SECONDS,
+ exp, (long)cfs_time_current_sec(),
(long)expire_time,
(long)exp->exp_last_request_time);
CDEBUG(D_HA, "Last request was at %ld\n",
continue;
}
- req = ptlrpc_prep_req(imp, LUSTRE_OBD_VERSION, OBD_PING,
- 1, NULL, NULL);
- if (!req) {
- CERROR("out of memory\n");
+ req = ptlrpc_request_alloc_pack(imp, &RQF_OBD_PING,
+ LUSTRE_OBD_VERSION,
+ OBD_PING);
+ if (req == NULL) {
+ CERROR("OOM trying to ping %s->%s\n",
+ imp->imp_obd->obd_uuid.uuid,
+ obd2cli_tgt(imp->imp_obd));
break;
}
+
req->rq_no_resend = 1;
- ptlrpc_req_set_repsize(req, 1, NULL);
+ ptlrpc_request_set_replen(req);
req->rq_send_state = LUSTRE_IMP_FULL;
req->rq_phase = RQ_PHASE_RPC;
req->rq_import_generation = generation;