From: David Teigland <teigland@redhat.com>
To: akpm@osdl.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 7/7] dlm: sem2mutex
Date: Thu, 19 Jan 2006 15:31:11 -0600 [thread overview]
Message-ID: <20060119213111.GG31387@redhat.com> (raw)
Convert semaphore to mutex.
Signed-off-by: David Teigland <teigland@redhat.com>
Index: linux/drivers/dlm/ast.c
===================================================================
--- linux.orig/drivers/dlm/ast.c 2006-01-19 13:39:18.000000000 -0600
+++ linux/drivers/dlm/ast.c 2006-01-19 13:40:53.000000000 -0600
@@ -21,7 +21,7 @@
static spinlock_t ast_queue_lock;
static struct task_struct * astd_task;
static unsigned long astd_wakeflags;
-static struct semaphore astd_running;
+static struct mutex astd_running;
void dlm_del_ast(struct dlm_lkb *lkb)
@@ -117,10 +117,10 @@
schedule();
set_current_state(TASK_RUNNING);
- down(&astd_running);
+ mutex_lock(&astd_running);
if (test_and_clear_bit(WAKE_ASTS, &astd_wakeflags))
process_asts();
- up(&astd_running);
+ mutex_unlock(&astd_running);
}
return 0;
}
@@ -140,7 +140,7 @@
INIT_LIST_HEAD(&ast_queue);
spin_lock_init(&ast_queue_lock);
- init_MUTEX(&astd_running);
+ mutex_init(&astd_running);
p = kthread_run(dlm_astd, NULL, "dlm_astd");
if (IS_ERR(p))
@@ -157,11 +157,11 @@
void dlm_astd_suspend(void)
{
- down(&astd_running);
+ mutex_lock(&astd_running);
}
void dlm_astd_resume(void)
{
- up(&astd_running);
+ mutex_unlock(&astd_running);
}
Index: linux/drivers/dlm/config.c
===================================================================
--- linux.orig/drivers/dlm/config.c 2006-01-19 13:39:18.000000000 -0600
+++ linux/drivers/dlm/config.c 2006-01-19 13:42:17.000000000 -0600
@@ -162,7 +162,7 @@
struct space {
struct config_group group;
struct list_head members;
- struct semaphore members_lock;
+ struct mutex members_lock;
int members_count;
};
@@ -374,7 +374,7 @@
sp->group.default_groups[1] = NULL;
INIT_LIST_HEAD(&sp->members);
- init_MUTEX(&sp->members_lock);
+ mutex_init(&sp->members_lock);
sp->members_count = 0;
return &sp->group;
@@ -453,10 +453,10 @@
nd->nodeid = -1;
nd->weight = 1; /* default weight of 1 if none is set */
- down(&sp->members_lock);
+ mutex_lock(&sp->members_lock);
list_add(&nd->list, &sp->members);
sp->members_count++;
- up(&sp->members_lock);
+ mutex_unlock(&sp->members_lock);
return &nd->item;
}
@@ -466,10 +466,10 @@
struct space *sp = to_space(g->cg_item.ci_parent);
struct node *nd = to_node(i);
- down(&sp->members_lock);
+ mutex_lock(&sp->members_lock);
list_del(&nd->list);
sp->members_count--;
- up(&sp->members_lock);
+ mutex_unlock(&sp->members_lock);
config_item_put(i);
}
@@ -677,7 +677,7 @@
if (!sp)
return -EEXIST;
- down(&sp->members_lock);
+ mutex_lock(&sp->members_lock);
if (!sp->members_count) {
rv = 0;
goto out;
@@ -698,7 +698,7 @@
*ids_out = ids;
out:
- up(&sp->members_lock);
+ mutex_unlock(&sp->members_lock);
put_space(sp);
return rv;
}
@@ -713,14 +713,14 @@
if (!sp)
goto out;
- down(&sp->members_lock);
+ mutex_lock(&sp->members_lock);
list_for_each_entry(nd, &sp->members, list) {
if (nd->nodeid != nodeid)
continue;
w = nd->weight;
break;
}
- up(&sp->members_lock);
+ mutex_unlock(&sp->members_lock);
put_space(sp);
out:
return w;
Index: linux/drivers/dlm/device.c
===================================================================
--- linux.orig/drivers/dlm/device.c 2006-01-19 13:38:54.000000000 -0600
+++ linux/drivers/dlm/device.c 2006-01-19 14:25:00.000000000 -0600
@@ -43,7 +43,7 @@
static struct file_operations _dlm_fops;
static const char *name_prefix="dlm";
static struct list_head user_ls_list;
-static struct semaphore user_ls_lock;
+static struct mutex user_ls_lock;
/* Lock infos are stored in here indexed by lock ID */
static DEFINE_IDR(lockinfo_idr);
@@ -212,18 +212,18 @@
{
struct user_ls *lsinfo;
- down(&user_ls_lock);
+ mutex_lock(&user_ls_lock);
lsinfo = __find_lockspace(minor);
- up(&user_ls_lock);
+ mutex_unlock(&user_ls_lock);
return lsinfo;
}
static void add_lockspace_to_list(struct user_ls *lsinfo)
{
- down(&user_ls_lock);
+ mutex_lock(&user_ls_lock);
list_add(&lsinfo->ls_list, &user_ls_list);
- up(&user_ls_lock);
+ mutex_unlock(&user_ls_lock);
}
/* Register a lockspace with the DLM and create a misc
@@ -277,7 +277,7 @@
return 0;
}
-/* Called with the user_ls_lock semaphore held */
+/* Called with the user_ls_lock mutex held */
static int unregister_lockspace(struct user_ls *lsinfo, int force)
{
int status;
@@ -570,7 +570,7 @@
* then free the struct. If it's an AUTOFREE lockspace
* then free the whole thing.
*/
- down(&user_ls_lock);
+ mutex_lock(&user_ls_lock);
if (atomic_dec_and_test(&lsinfo->ls_refcnt)) {
if (lsinfo->ls_lockspace) {
@@ -582,7 +582,7 @@
kfree(lsinfo);
}
}
- up(&user_ls_lock);
+ mutex_unlock(&user_ls_lock);
put_file_info(f);
/* Restore signals */
@@ -620,10 +620,10 @@
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
- down(&user_ls_lock);
+ mutex_lock(&user_ls_lock);
lsinfo = __find_lockspace(kparams->minor);
if (!lsinfo) {
- up(&user_ls_lock);
+ mutex_unlock(&user_ls_lock);
return -EINVAL;
}
@@ -631,7 +631,7 @@
force = 2;
status = unregister_lockspace(lsinfo, force);
- up(&user_ls_lock);
+ mutex_unlock(&user_ls_lock);
return status;
}
@@ -1066,7 +1066,7 @@
int r;
INIT_LIST_HEAD(&user_ls_list);
- init_MUTEX(&user_ls_lock);
+ mutex_init(&user_ls_lock);
rwlock_init(&lockinfo_lock);
ctl_device.name = "dlm-control";
Index: linux/drivers/dlm/dlm_internal.h
===================================================================
--- linux.orig/drivers/dlm/dlm_internal.h 2006-01-19 13:39:18.000000000 -0600
+++ linux/drivers/dlm/dlm_internal.h 2006-01-19 14:15:32.000000000 -0600
@@ -35,6 +35,7 @@
#include <linux/kref.h>
#include <linux/kernel.h>
#include <linux/jhash.h>
+#include <linux/mutex.h>
#include <asm/semaphore.h>
#include <asm/uaccess.h>
@@ -252,7 +253,7 @@
struct dlm_rsb {
struct dlm_ls *res_ls; /* the lockspace */
struct kref res_ref;
- struct semaphore res_sem;
+ struct mutex res_mutex;
unsigned long res_flags;
int res_length; /* length of rsb name */
int res_nodeid;
@@ -435,7 +436,7 @@
struct dlm_dirtable *ls_dirtbl;
uint32_t ls_dirtbl_size;
- struct semaphore ls_waiters_sem;
+ struct mutex ls_waiters_mutex;
struct list_head ls_waiters; /* lkbs needing a reply */
struct list_head ls_nodes; /* current nodes in ls */
@@ -458,14 +459,14 @@
struct timer_list ls_timer;
struct task_struct *ls_recoverd_task;
- struct semaphore ls_recoverd_active;
+ struct mutex ls_recoverd_active;
spinlock_t ls_recover_lock;
uint32_t ls_recover_status; /* DLM_RS_ */
uint64_t ls_recover_seq;
struct dlm_recover *ls_recover_args;
struct rw_semaphore ls_in_recovery; /* block local requests */
struct list_head ls_requestqueue;/* queue remote requests */
- struct semaphore ls_requestqueue_lock;
+ struct mutex ls_requestqueue_mutex;
char *ls_recover_buf;
struct list_head ls_recover_list;
spinlock_t ls_recover_list_lock;
Index: linux/drivers/dlm/lock.c
===================================================================
--- linux.orig/drivers/dlm/lock.c 2006-01-19 13:39:18.000000000 -0600
+++ linux/drivers/dlm/lock.c 2006-01-19 14:35:25.638621443 -0600
@@ -269,7 +269,7 @@
r->res_ls = ls;
r->res_length = len;
memcpy(r->res_name, name, len);
- init_MUTEX(&r->res_sem);
+ mutex_init(&r->res_mutex);
INIT_LIST_HEAD(&r->res_lookup);
INIT_LIST_HEAD(&r->res_grantqueue);
@@ -712,7 +712,7 @@
{
struct dlm_ls *ls = lkb->lkb_resource->res_ls;
- down(&ls->ls_waiters_sem);
+ mutex_lock(&ls->ls_waiters_mutex);
if (lkb->lkb_wait_type) {
log_print("add_to_waiters error %d", lkb->lkb_wait_type);
goto out;
@@ -721,7 +721,7 @@
kref_get(&lkb->lkb_ref);
list_add(&lkb->lkb_wait_reply, &ls->ls_waiters);
out:
- up(&ls->ls_waiters_sem);
+ mutex_unlock(&ls->ls_waiters_mutex);
}
static int _remove_from_waiters(struct dlm_lkb *lkb)
@@ -745,9 +745,9 @@
struct dlm_ls *ls = lkb->lkb_resource->res_ls;
int error;
- down(&ls->ls_waiters_sem);
+ mutex_lock(&ls->ls_waiters_mutex);
error = _remove_from_waiters(lkb);
- up(&ls->ls_waiters_sem);
+ mutex_unlock(&ls->ls_waiters_mutex);
return error;
}
@@ -3205,7 +3205,7 @@
{
struct dlm_lkb *lkb, *safe;
- down(&ls->ls_waiters_sem);
+ mutex_lock(&ls->ls_waiters_mutex);
list_for_each_entry_safe(lkb, safe, &ls->ls_waiters, lkb_wait_reply) {
log_debug(ls, "pre recover waiter lkid %x type %d flags %x",
@@ -3253,7 +3253,7 @@
lkb->lkb_wait_type);
}
}
- up(&ls->ls_waiters_sem);
+ mutex_unlock(&ls->ls_waiters_mutex);
}
static int remove_resend_waiter(struct dlm_ls *ls, struct dlm_lkb **lkb_ret)
@@ -3261,7 +3261,7 @@
struct dlm_lkb *lkb;
int rv = 0;
- down(&ls->ls_waiters_sem);
+ mutex_lock(&ls->ls_waiters_mutex);
list_for_each_entry(lkb, &ls->ls_waiters, lkb_wait_reply) {
if (lkb->lkb_flags & DLM_IFL_RESEND) {
rv = lkb->lkb_wait_type;
@@ -3270,7 +3270,7 @@
break;
}
}
- up(&ls->ls_waiters_sem);
+ mutex_unlock(&ls->ls_waiters_mutex);
if (!rv)
lkb = NULL;
Index: linux/drivers/dlm/lock.h
===================================================================
--- linux.orig/drivers/dlm/lock.h 2006-01-19 13:39:18.000000000 -0600
+++ linux/drivers/dlm/lock.h 2006-01-19 14:16:25.000000000 -0600
@@ -38,12 +38,12 @@
static inline void lock_rsb(struct dlm_rsb *r)
{
- down(&r->res_sem);
+ mutex_lock(&r->res_mutex);
}
static inline void unlock_rsb(struct dlm_rsb *r)
{
- up(&r->res_sem);
+ mutex_unlock(&r->res_mutex);
}
#endif
Index: linux/drivers/dlm/lockspace.c
===================================================================
--- linux.orig/drivers/dlm/lockspace.c 2006-01-19 13:38:54.000000000 -0600
+++ linux/drivers/dlm/lockspace.c 2006-01-19 14:19:50.000000000 -0600
@@ -31,7 +31,7 @@
#endif
static int ls_count;
-static struct semaphore ls_lock;
+static struct mutex ls_lock;
static struct list_head lslist;
static spinlock_t lslist_lock;
static struct task_struct * scand_task;
@@ -177,7 +177,7 @@
int error;
ls_count = 0;
- init_MUTEX(&ls_lock);
+ mutex_init(&ls_lock);
INIT_LIST_HEAD(&lslist);
spin_lock_init(&lslist_lock);
@@ -397,7 +397,7 @@
}
INIT_LIST_HEAD(&ls->ls_waiters);
- init_MUTEX(&ls->ls_waiters_sem);
+ mutex_init(&ls->ls_waiters_mutex);
INIT_LIST_HEAD(&ls->ls_nodes);
INIT_LIST_HEAD(&ls->ls_nodes_gone);
@@ -415,14 +415,14 @@
ls->ls_uevent_result = 0;
ls->ls_recoverd_task = NULL;
- init_MUTEX(&ls->ls_recoverd_active);
+ mutex_init(&ls->ls_recoverd_active);
spin_lock_init(&ls->ls_recover_lock);
ls->ls_recover_status = 0;
ls->ls_recover_seq = 0;
ls->ls_recover_args = NULL;
init_rwsem(&ls->ls_in_recovery);
INIT_LIST_HEAD(&ls->ls_requestqueue);
- init_MUTEX(&ls->ls_requestqueue_lock);
+ mutex_init(&ls->ls_requestqueue_mutex);
ls->ls_recover_buf = kmalloc(dlm_config.buffer_size, GFP_KERNEL);
if (!ls->ls_recover_buf)
@@ -492,7 +492,7 @@
{
int error = 0;
- down(&ls_lock);
+ mutex_lock(&ls_lock);
if (!ls_count)
error = threads_start();
if (error)
@@ -502,7 +502,7 @@
if (!error)
ls_count++;
out:
- up(&ls_lock);
+ mutex_unlock(&ls_lock);
return error;
}
@@ -628,11 +628,11 @@
kobject_unregister(&ls->ls_kobj);
kfree(ls);
- down(&ls_lock);
+ mutex_lock(&ls_lock);
ls_count--;
if (!ls_count)
threads_stop();
- up(&ls_lock);
+ mutex_unlock(&ls_lock);
module_put(THIS_MODULE);
return 0;
Index: linux/drivers/dlm/recoverd.c
===================================================================
--- linux.orig/drivers/dlm/recoverd.c 2006-01-19 13:39:18.000000000 -0600
+++ linux/drivers/dlm/recoverd.c 2006-01-19 14:19:13.000000000 -0600
@@ -47,7 +47,7 @@
log_debug(ls, "recover %llx", rv->seq);
- down(&ls->ls_recoverd_active);
+ mutex_lock(&ls->ls_recoverd_active);
/*
* Suspending and resuming dlm_astd ensures that no lkb's from this ls
@@ -201,14 +201,14 @@
log_debug(ls, "recover %llx done: %u ms", rv->seq,
jiffies_to_msecs(jiffies - start));
- up(&ls->ls_recoverd_active);
+ mutex_unlock(&ls->ls_recoverd_active);
return 0;
fail:
dlm_release_root_list(ls);
log_debug(ls, "recover %llx error %d", rv->seq, error);
- up(&ls->ls_recoverd_active);
+ mutex_unlock(&ls->ls_recoverd_active);
return error;
}
@@ -275,11 +275,11 @@
void dlm_recoverd_suspend(struct dlm_ls *ls)
{
- down(&ls->ls_recoverd_active);
+ mutex_lock(&ls->ls_recoverd_active);
}
void dlm_recoverd_resume(struct dlm_ls *ls)
{
- up(&ls->ls_recoverd_active);
+ mutex_unlock(&ls->ls_recoverd_active);
}
Index: linux/drivers/dlm/requestqueue.c
===================================================================
--- linux.orig/drivers/dlm/requestqueue.c 2006-01-19 13:39:18.000000000 -0600
+++ linux/drivers/dlm/requestqueue.c 2006-01-19 14:21:37.000000000 -0600
@@ -47,9 +47,9 @@
e->nodeid = nodeid;
memcpy(e->request, hd, length);
- down(&ls->ls_requestqueue_lock);
+ mutex_lock(&ls->ls_requestqueue_mutex);
list_add_tail(&e->list, &ls->ls_requestqueue);
- up(&ls->ls_requestqueue_lock);
+ mutex_unlock(&ls->ls_requestqueue_mutex);
}
int dlm_process_requestqueue(struct dlm_ls *ls)
@@ -58,16 +58,16 @@
struct dlm_header *hd;
int error = 0;
- down(&ls->ls_requestqueue_lock);
+ mutex_lock(&ls->ls_requestqueue_mutex);
for (;;) {
if (list_empty(&ls->ls_requestqueue)) {
- up(&ls->ls_requestqueue_lock);
+ mutex_unlock(&ls->ls_requestqueue_mutex);
error = 0;
break;
}
e = list_entry(ls->ls_requestqueue.next, struct rq_entry, list);
- up(&ls->ls_requestqueue_lock);
+ mutex_unlock(&ls->ls_requestqueue_mutex);
hd = (struct dlm_header *) e->request;
error = dlm_receive_message(hd, e->nodeid, 1);
@@ -78,13 +78,13 @@
break;
}
- down(&ls->ls_requestqueue_lock);
+ mutex_lock(&ls->ls_requestqueue_mutex);
list_del(&e->list);
kfree(e);
if (dlm_locking_stopped(ls)) {
log_debug(ls, "process_requestqueue abort running");
- up(&ls->ls_requestqueue_lock);
+ mutex_unlock(&ls->ls_requestqueue_mutex);
error = -EINTR;
break;
}
@@ -105,15 +105,15 @@
void dlm_wait_requestqueue(struct dlm_ls *ls)
{
for (;;) {
- down(&ls->ls_requestqueue_lock);
+ mutex_lock(&ls->ls_requestqueue_mutex);
if (list_empty(&ls->ls_requestqueue))
break;
if (dlm_locking_stopped(ls))
break;
- up(&ls->ls_requestqueue_lock);
+ mutex_unlock(&ls->ls_requestqueue_mutex);
schedule();
}
- up(&ls->ls_requestqueue_lock);
+ mutex_unlock(&ls->ls_requestqueue_mutex);
}
static int purge_request(struct dlm_ls *ls, struct dlm_message *ms, int nodeid)
@@ -170,7 +170,7 @@
struct dlm_message *ms;
struct rq_entry *e, *safe;
- down(&ls->ls_requestqueue_lock);
+ mutex_lock(&ls->ls_requestqueue_mutex);
list_for_each_entry_safe(e, safe, &ls->ls_requestqueue, list) {
ms = (struct dlm_message *) e->request;
@@ -179,6 +179,6 @@
kfree(e);
}
}
- up(&ls->ls_requestqueue_lock);
+ mutex_unlock(&ls->ls_requestqueue_mutex);
}
reply other threads:[~2006-01-19 21:32 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060119213111.GG31387@redhat.com \
--to=teigland@redhat.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.