Skip to content

Commit

Permalink
[DLM] Convert a semaphore to a completion
Browse files Browse the repository at this point in the history
Convert a semaphore into a completion in device.c.

Cc: David Teigland <teigland@redhat.com>
Cc: Andrew Morton <akpm@osdl.org>
Signed-off-by: Patrick Caulfield <pcaulfie@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
  • Loading branch information
Patrick Caulfield authored and Steven Whitehouse committed Apr 25, 2006
1 parent 96c2c00 commit 714dc65
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions fs/dlm/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ struct lock_info {
struct list_head li_ownerqueue;
struct file_info *li_file;
struct dlm_lksb __user *li_user_lksb;
struct semaphore li_firstlock;
struct completion li_firstcomp;
};

/* A queued AST no less */
Expand Down Expand Up @@ -376,8 +376,7 @@ static void ast_routine(void *param)
li->li_lksb.sb_status != 0) {

/* Wait till dlm_lock() has finished */
down(&li->li_firstlock);
up(&li->li_firstlock);
wait_for_completion(&li->li_firstcomp);

spin_lock(&li->li_file->fi_li_lock);
list_del(&li->li_ownerqueue);
Expand Down Expand Up @@ -808,10 +807,10 @@ static int do_user_lock(struct file_info *fi, uint8_t cmd,
li->li_castaddr = kparams->castaddr;
li->li_castparam = kparams->castparam;

/* OK, this isn;t exactly a FIRSTLOCK but it is the
/* OK, this isn't exactly a FIRSTLOCK but it is the
first time we've used this lockinfo, and if things
fail we want rid of it */
init_MUTEX_LOCKED(&li->li_firstlock);
init_completion(&li->li_firstcomp);
set_bit(LI_FLAG_FIRSTLOCK, &li->li_flags);
add_lockinfo(li);

Expand Down Expand Up @@ -839,10 +838,10 @@ static int do_user_lock(struct file_info *fi, uint8_t cmd,
if (!li)
return -ENOMEM;

/* semaphore to allow us to complete our work before
/* Allow us to complete our work before
the AST routine runs. In fact we only need (and use) this
when the initial lock fails */
init_MUTEX_LOCKED(&li->li_firstlock);
init_completion(&li->li_firstcomp);
set_bit(LI_FLAG_FIRSTLOCK, &li->li_flags);
}

Expand Down Expand Up @@ -892,7 +891,7 @@ static int do_user_lock(struct file_info *fi, uint8_t cmd,
if (add_lockinfo(li))
printk(KERN_WARNING "Add lockinfo failed\n");

up(&li->li_firstlock);
complete(&li->li_firstcomp);
}

/* Return the lockid as the user needs it /now/ */
Expand Down Expand Up @@ -936,8 +935,7 @@ static int do_user_unlock(struct file_info *fi, uint8_t cmd,

/* Wait until dlm_lock() has completed */
if (!test_bit(LI_FLAG_ONLIST, &li->li_flags)) {
down(&li->li_firstlock);
up(&li->li_firstlock);
wait_for_completion(&li->li_firstcomp);
}

/* dlm_unlock() passes a 0 for castaddr which means don't overwrite
Expand Down

0 comments on commit 714dc65

Please sign in to comment.