forked from luck/tmp_suning_uos_patched
usb-storage: change remaining semaphore to completion
This patch (as1090) converts the one remaining semaphore in usb-storage into a completion. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Cc: Matthew Dharm <mdharm-usb@one-eyed-alien.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
7e4d6c3879
commit
7119e3c37f
@ -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,9 +312,9 @@ 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");
|
||||||
|
|
||||||
/* lock the device pointers */
|
/* lock the device pointers */
|
||||||
@ -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,
|
|||||||
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 {
|
|||||||
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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user