The event_wait semaphore has completion semantics, so we can
change it over to the completion interface for clarity without
changing the behavior.
Signed-off-by: Arnd Bergmann
---
drivers/scsi/aacraid/aacraid.h | 3 ++-
drivers/scsi/aacraid/commctrl.c | 1 -
drivers/scsi/aacraid/commsup.c | 15 +++
drivers/scsi/aacraid/dpcsup.c | 19 +--
drivers/scsi/aacraid/linit.c| 2 +-
drivers/scsi/aacraid/src.c | 2 +-
6 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 531a0b9a58f8..3291d1c16864 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -40,6 +40,7 @@
#define nblank(x) _nblank(x)[0]
#include
+#include
#include
#include
@@ -1313,7 +1314,7 @@ struct fib {
* This is the event the sendfib routine will wait on if the
* caller did not pass one and this is synch io.
*/
- struct semaphoreevent_wait;
+ struct completion event_wait;
spinlock_t event_lock;
u32 done; /* gets set to 1 when fib is complete */
diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
index 6a6ad9477786..e2899ff7913e 100644
--- a/drivers/scsi/aacraid/commctrl.c
+++ b/drivers/scsi/aacraid/commctrl.c
@@ -41,7 +41,6 @@
#include
#include /* ssleep prototype */
#include
-#include
#include
#include
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index 7ed51a77e39d..d5a6aa9676c8 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -44,7 +44,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -189,7 +188,7 @@ int aac_fib_setup(struct aac_dev * dev)
fibptr->hw_fib_va = hw_fib;
fibptr->data = (void *) fibptr->hw_fib_va->data;
fibptr->next = fibptr+1;/* Forward chain the fibs */
- sema_init(>event_wait, 0);
+ init_completion(>event_wait);
spin_lock_init(>event_lock);
hw_fib->header.XferState = cpu_to_le32(0x);
hw_fib->header.SenderSize =
@@ -623,7 +622,7 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned
long size,
}
if (wait) {
fibptr->flags |= FIB_CONTEXT_FLAG_WAIT;
- if (down_interruptible(>event_wait)) {
+ if
(wait_for_completion_interruptible(>event_wait)) {
fibptr->flags &= ~FIB_CONTEXT_FLAG_WAIT;
return -EFAULT;
}
@@ -659,7 +658,7 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned
long size,
* hardware failure has occurred.
*/
unsigned long timeout = jiffies + (180 * HZ); /* 3
minutes */
- while (down_trylock(>event_wait)) {
+ while (!try_wait_for_completion(>event_wait)) {
int blink;
if (time_is_before_eq_jiffies(timeout)) {
struct aac_queue * q =
>queues->queue[AdapNormCmdQueue];
@@ -689,9 +688,9 @@ int aac_fib_send(u16 command, struct fib *fibptr, unsigned
long size,
*/
schedule();
}
- } else if (down_interruptible(>event_wait)) {
+ } else if
(wait_for_completion_interruptible(>event_wait)) {
/* Do nothing ... satisfy
-* down_interruptible must_check */
+* wait_for_completion_interruptible must_check */
}
spin_lock_irqsave(>event_lock, flags);
@@ -777,7 +776,7 @@ int aac_hba_send(u8 command, struct fib *fibptr,
fib_callback callback,
return -EFAULT;
fibptr->flags |= FIB_CONTEXT_FLAG_WAIT;
- if (down_interruptible(>event_wait))
+ if (wait_for_completion_interruptible(>event_wait))
fibptr->done = 2;
fibptr->flags &= ~(FIB_CONTEXT_FLAG_WAIT);
@@ -1538,7 +1537,7 @@ static int _aac_reset_adapter(struct aac_dev *aac, int
forced, u8 reset_type)
|| fib->flags & FIB_CONTEXT_FLAG_WAIT) {
unsigned long flagv;
spin_lock_irqsave(>event_lock, flagv);
- up(>event_wait);
+ complete(>event_wait);
spin_unlock_irqrestore(>event_lock, flagv);
schedule();
retval = 0;
diff --git a/drivers/scsi/aacraid/dpcsup.c b/drivers/scsi/aacraid/dpcsup.c
index ddc69738375f..40a771dd1c0e