#include <obd_class.h>
#include "ptlrpc_internal.h"
-cfs_semaphore_t pinger_sem;
+cfs_mutex_t pinger_mutex;
static CFS_LIST_HEAD(pinger_imports);
static cfs_list_t timeout_list = CFS_LIST_HEAD_INIT(timeout_list);
struct ptlrpc_request *
cfs_time_t timeout = PING_INTERVAL;
/* The timeout list is a increase order sorted list */
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_for_each_entry(item, &timeout_list, ti_chain) {
int ti_timeout = item->ti_timeout;
if (timeout > ti_timeout)
timeout = ti_timeout;
break;
}
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
return cfs_time_sub(cfs_time_add(time, cfs_time_seconds(timeout)),
cfs_time_current());
struct timeout_item *item;
cfs_list_t *iter;
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_for_each_entry(item, &timeout_list, ti_chain) {
item->ti_cb(item, item->ti_cb_data);
}
cfs_time_seconds(PING_INTERVAL))))
ptlrpc_update_next_ping(imp, 0);
}
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
/* update memory usage info */
obd_update_maxusage();
RETURN(-EALREADY);
ptlrpc_pinger_remove_timeouts();
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
thread_set_flags(pinger_thread, SVC_STOPPING);
cfs_waitq_signal(&pinger_thread->t_ctl_waitq);
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
l_wait_event(pinger_thread->t_ctl_waitq,
thread_is_stopped(pinger_thread), &lwi);
if (!cfs_list_empty(&imp->imp_pinger_chain))
RETURN(-EALREADY);
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
CDEBUG(D_HA, "adding pingable import %s->%s\n",
imp->imp_obd->obd_uuid.uuid, obd2cli_tgt(imp->imp_obd));
/* if we add to pinger we want recovery on this import */
class_import_get(imp);
ptlrpc_pinger_wake_up();
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
RETURN(0);
}
if (cfs_list_empty(&imp->imp_pinger_chain))
RETURN(-ENOENT);
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_del_init(&imp->imp_pinger_chain);
CDEBUG(D_HA, "removing pingable import %s->%s\n",
imp->imp_obd->obd_uuid.uuid, obd2cli_tgt(imp->imp_obd));
/* if we remove from pinger we don't want recovery on this import */
imp->imp_obd->obd_no_recov = 1;
class_import_put(imp);
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
RETURN(0);
}
{
struct timeout_item *item, *tmp;
- LASSERT_SEM_LOCKED(&pinger_sem);
+ LASSERT_MUTEX_LOCKED(&pinger_mutex);
cfs_list_for_each_entry(item, &timeout_list, ti_chain)
if (item->ti_event == event)
{
struct timeout_item *ti;
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
ti = ptlrpc_pinger_register_timeout(time, event, cb, data);
if (!ti) {
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
return (-EINVAL);
}
cfs_list_add(obd_list, &ti->ti_obd_list);
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
return 0;
}
if (cfs_list_empty(obd_list))
return 0;
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_del_init(obd_list);
/**
* If there are no obd attached to the timeout event
cfs_list_del(&ti->ti_chain);
OBD_FREE_PTR(ti);
}
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
return 0;
}
{
struct timeout_item *item, *tmp;
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_for_each_entry_safe(item, tmp, &timeout_list, ti_chain) {
LASSERT(cfs_list_empty(&item->ti_obd_list));
cfs_list_del(&item->ti_chain);
OBD_FREE_PTR(item);
}
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
return 0;
}
set = pd->pd_set;
/* add rpcs into set */
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_for_each(iter, &pinger_imports) {
struct obd_import *imp = cfs_list_entry(iter, struct obd_import,
imp_pinger_chain);
}
}
pd->pd_this_ping = curtime;
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
/* Might be empty, that's OK. */
if (cfs_atomic_read(&set->set_remaining) == 0)
}
/* Expire all the requests that didn't come back. */
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_for_each(iter, &set->set_requests) {
req = cfs_list_entry(iter, struct ptlrpc_request,
rq_set_chain);
cfs_spin_unlock(&imp->imp_lock);
cfs_atomic_dec(&set->set_remaining);
}
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
ptlrpc_set_destroy(set);
pd->pd_set = NULL;
void ptlrpc_pinger_sending_on_import(struct obd_import *imp)
{
#ifdef ENABLE_PINGER
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
ptlrpc_update_next_ping(imp, 0);
if (pinger_args.pd_set == NULL &&
cfs_time_before(imp->imp_next_ping, pinger_args.pd_next_ping)) {
imp->imp_next_ping, cfs_time_current());
pinger_args.pd_next_ping = imp->imp_next_ping;
}
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
#endif
}
void ptlrpc_pinger_commit_expected(struct obd_import *imp)
{
#ifdef ENABLE_PINGER
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
ptlrpc_update_next_ping(imp, 1);
if (pinger_args.pd_set == NULL &&
cfs_time_before(imp->imp_next_ping, pinger_args.pd_next_ping)) {
imp->imp_next_ping, cfs_time_current());
pinger_args.pd_next_ping = imp->imp_next_ping;
}
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
#endif
}
imp->imp_obd->obd_uuid.uuid, obd2cli_tgt(imp->imp_obd));
ptlrpc_pinger_sending_on_import(imp);
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_add_tail(&imp->imp_pinger_chain, &pinger_imports);
class_import_get(imp);
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
RETURN(0);
}
if (cfs_list_empty(&imp->imp_pinger_chain))
RETURN(-ENOENT);
- cfs_mutex_down(&pinger_sem);
+ cfs_mutex_lock(&pinger_mutex);
cfs_list_del_init(&imp->imp_pinger_chain);
CDEBUG(D_HA, "removing pingable import %s->%s\n",
imp->imp_obd->obd_uuid.uuid, obd2cli_tgt(imp->imp_obd));
class_import_put(imp);
- cfs_mutex_up(&pinger_sem);
+ cfs_mutex_unlock(&pinger_mutex);
RETURN(0);
}