RE: [PATCH 2/2] scsi: aacraid: change event_wait to a completion

2018-12-11 Thread Dave.Carroll



> -Original Message-
> From: linux-scsi-ow...@vger.kernel.org [mailto:linux-scsi-
> ow...@vger.kernel.org] On Behalf Of Arnd Bergmann
> Sent: Monday, December 10, 2018 1:33 PM
> To: Adaptec OEM Raid Solutions ; James E.J.
> Bottomley ; Martin K. Petersen
> 
> Cc: Arnd Bergmann ; Raghava Aditya Renukunta
> ; Prasad B Munirathnam
> ; Dave Carroll
> ; Dan Carpenter
> ; Johannes Thumshirn ;
> linux-s...@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: [PATCH 2/2] scsi: aacraid: change event_wait to a completion
> 
> 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 
> ---
Reviewed-by: Dave Carroll 


Re: [PATCH 2/2] scsi: aacraid: change event_wait to a completion

2018-12-10 Thread Johannes Thumshirn
Looks good,
Reviewed-by: Johannes Thumshirn 
-- 
Johannes ThumshirnSUSE Labs Filesystems
jthumsh...@suse.de+49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850


[PATCH 2/2] scsi: aacraid: change event_wait to a completion

2018-12-10 Thread Arnd Bergmann
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