mirror of https://gitee.com/openkylin/linux.git
scsi: aacraid: change wait_sem to a completion
The wait_sem member is used like a completion, so we should use the respective API. The behavior is unchanged. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Dave Carroll <david.carroll@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
719162bd5b
commit
dc71eccc17
|
@ -1241,7 +1241,7 @@ struct aac_fib_context {
|
|||
u32 unique; // unique value representing this context
|
||||
ulong jiffies; // used for cleanup - dmb changed to ulong
|
||||
struct list_head next; // used to link context's into a linked list
|
||||
struct semaphore wait_sem; // this is used to wait for the next fib to arrive.
|
||||
struct completion completion; // this is used to wait for the next fib to arrive.
|
||||
int wait; // Set to true when thread is in WaitForSingleObject
|
||||
unsigned long count; // total number of FIBs on FibList
|
||||
struct list_head fib_list; // this holds fibs and their attachd hw_fibs
|
||||
|
|
|
@ -203,7 +203,7 @@ static int open_getadapter_fib(struct aac_dev * dev, void __user *arg)
|
|||
/*
|
||||
* Initialize the mutex used to wait for the next AIF.
|
||||
*/
|
||||
sema_init(&fibctx->wait_sem, 0);
|
||||
init_completion(&fibctx->completion);
|
||||
fibctx->wait = 0;
|
||||
/*
|
||||
* Initialize the fibs and set the count of fibs on
|
||||
|
@ -335,7 +335,7 @@ static int next_getadapter_fib(struct aac_dev * dev, void __user *arg)
|
|||
ssleep(1);
|
||||
}
|
||||
if (f.wait) {
|
||||
if(down_interruptible(&fibctx->wait_sem) < 0) {
|
||||
if (wait_for_completion_interruptible(&fibctx->completion) < 0) {
|
||||
status = -ERESTARTSYS;
|
||||
} else {
|
||||
/* Lock again and retry */
|
||||
|
|
|
@ -1828,7 +1828,7 @@ int aac_check_health(struct aac_dev * aac)
|
|||
* Set the event to wake up the
|
||||
* thread that will waiting.
|
||||
*/
|
||||
up(&fibctx->wait_sem);
|
||||
complete(&fibctx->completion);
|
||||
} else {
|
||||
printk(KERN_WARNING "aifd: didn't allocate NewFib.\n");
|
||||
kfree(fib);
|
||||
|
@ -2165,7 +2165,7 @@ static void wakeup_fibctx_threads(struct aac_dev *dev,
|
|||
* Set the event to wake up the
|
||||
* thread that is waiting.
|
||||
*/
|
||||
up(&fibctx->wait_sem);
|
||||
complete(&fibctx->completion);
|
||||
|
||||
entry = entry->next;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue