Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -248,7 +248,7 @@ static int queuecommand(struct scsi_cmnd *srb,
	/* enqueue the command and wake up the control thread */
	srb->scsi_done = done;
	us->srb = srb;
	up(&(us->sema));
	complete(&us->cmnd_ready);

	return 0;
}
+4 −4
Original line number Diff line number Diff line
@@ -312,7 +312,7 @@ static int usb_stor_control_thread(void * __us)

	for(;;) {
		US_DEBUGP("*** thread sleeping.\n");
		if(down_interruptible(&us->sema))
		if (wait_for_completion_interruptible(&us->cmnd_ready))
			break;

		US_DEBUGP("*** thread awakened.\n");
@@ -825,7 +825,7 @@ static void usb_stor_release_resources(struct us_data *us)
	 */
	US_DEBUGP("-- sending exit command to thread\n");
	set_bit(US_FLIDX_DISCONNECTING, &us->dflags);
	up(&us->sema);
	complete(&us->cmnd_ready);
	if (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);
	memset(us, 0, sizeof(struct us_data));
	mutex_init(&(us->dev_mutex));
	init_MUTEX_LOCKED(&(us->sema));
	init_completion(&us->cmnd_ready);
	init_completion(&(us->notify));
	init_waitqueue_head(&us->delay_wait);
	init_completion(&us->scanning_done);
+1 −1
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ struct us_data {
	struct task_struct	*ctl_thread;	 /* the control thread   */

	/* 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	    */
	wait_queue_head_t	delay_wait;	 /* wait during scan, reset */
	struct completion	scanning_done;	 /* wait for scan thread    */