Commit 7119e3c3 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman

usb-storage: change remaining semaphore to completion

This patch (as1090) converts the one remaining semaphore in
usb-storage into a completion.
Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Cc: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 7e4d6c38
...@@ -248,7 +248,7 @@ static int queuecommand(struct scsi_cmnd *srb, ...@@ -248,7 +248,7 @@ static int queuecommand(struct scsi_cmnd *srb,
/* enqueue the command and wake up the control thread */ /* enqueue the command and wake up the control thread */
srb->scsi_done = done; srb->scsi_done = done;
us->srb = srb; us->srb = srb;
up(&(us->sema)); complete(&us->cmnd_ready);
return 0; return 0;
} }
......
...@@ -312,7 +312,7 @@ static int usb_stor_control_thread(void * __us) ...@@ -312,7 +312,7 @@ static int usb_stor_control_thread(void * __us)
for(;;) { for(;;) {
US_DEBUGP("*** thread sleeping.\n"); US_DEBUGP("*** thread sleeping.\n");
if(down_interruptible(&us->sema)) if (wait_for_completion_interruptible(&us->cmnd_ready))
break; break;
US_DEBUGP("*** thread awakened.\n"); US_DEBUGP("*** thread awakened.\n");
...@@ -825,7 +825,7 @@ static void usb_stor_release_resources(struct us_data *us) ...@@ -825,7 +825,7 @@ static void usb_stor_release_resources(struct us_data *us)
*/ */
US_DEBUGP("-- sending exit command to thread\n"); US_DEBUGP("-- sending exit command to thread\n");
set_bit(US_FLIDX_DISCONNECTING, &us->dflags); set_bit(US_FLIDX_DISCONNECTING, &us->dflags);
up(&us->sema); complete(&us->cmnd_ready);
if (us->ctl_thread) if (us->ctl_thread)
kthread_stop(us->ctl_thread); kthread_stop(us->ctl_thread);
...@@ -975,7 +975,7 @@ static int storage_probe(struct usb_interface *intf, ...@@ -975,7 +975,7 @@ static int storage_probe(struct usb_interface *intf,
us = host_to_us(host); us = host_to_us(host);
memset(us, 0, sizeof(struct us_data)); memset(us, 0, sizeof(struct us_data));
mutex_init(&(us->dev_mutex)); mutex_init(&(us->dev_mutex));
init_MUTEX_LOCKED(&(us->sema)); init_completion(&us->cmnd_ready);
init_completion(&(us->notify)); init_completion(&(us->notify));
init_waitqueue_head(&us->delay_wait); init_waitqueue_head(&us->delay_wait);
init_completion(&us->scanning_done); init_completion(&us->scanning_done);
......
...@@ -148,7 +148,7 @@ struct us_data { ...@@ -148,7 +148,7 @@ struct us_data {
struct task_struct *ctl_thread; /* the control thread */ struct task_struct *ctl_thread; /* the control thread */
/* mutual exclusion and synchronization structures */ /* mutual exclusion and synchronization structures */
struct semaphore sema; /* to sleep thread on */ struct completion cmnd_ready; /* to sleep thread on */
struct completion notify; /* thread begin/end */ struct completion notify; /* thread begin/end */
wait_queue_head_t delay_wait; /* wait during scan, reset */ wait_queue_head_t delay_wait; /* wait during scan, reset */
struct completion scanning_done; /* wait for scan thread */ struct completion scanning_done; /* wait for scan thread */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment