[SCSI] megaraid_mbox: use mutex instead of semaphore
authorMatthias Kaehlcke <matthias.kaehlcke@gmail.com>
Mon, 9 Jul 2007 19:00:11 +0000 (12:00 -0700)
committerJames Bottomley <jejb@mulgrave.localdomain>
Sun, 15 Jul 2007 00:10:19 +0000 (19:10 -0500)
The Megaraid Mailbox driver uses a semaphore as mutex.  Use the mutex API
instead of the (binary) semaphore.

Signed-off-by: Matthias Kaehlcke <matthias.kaehlcke@gmail.com>
Acked-by: "Patro, Sumant" <Sumant.Patro@lsi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/megaraid/mega_common.h
drivers/scsi/megaraid/megaraid_mbox.c
drivers/scsi/megaraid/megaraid_mbox.h

index 26e1e6c55654e0a71b4e272eac98ec6a43ec90fd..fef9ac95875475438665315c1a5624f979fcacff 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/types.h>
 #include <linux/pci.h>
 #include <linux/spinlock.h>
+#include <linux/mutex.h>
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 #include <linux/blkdev.h>
index 7d5a4d651b03c17b24f7190111b079f3ff2d99b7..c46685a03a9fea0a321da3780743a4dfaabdcd31 100644 (file)
@@ -3880,7 +3880,7 @@ megaraid_sysfs_alloc_resources(adapter_t *adapter)
                megaraid_sysfs_free_resources(adapter);
        }
 
-       sema_init(&raid_dev->sysfs_sem, 1);
+       mutex_init(&raid_dev->sysfs_mtx);
 
        init_waitqueue_head(&raid_dev->sysfs_wait_q);
 
@@ -3981,7 +3981,7 @@ megaraid_sysfs_get_ldmap(adapter_t *adapter)
        /*
         * Allow only one read at a time to go through the sysfs attributes
         */
-       down(&raid_dev->sysfs_sem);
+       mutex_lock(&raid_dev->sysfs_mtx);
 
        uioc    = raid_dev->sysfs_uioc;
        mbox64  = raid_dev->sysfs_mbox64;
@@ -4057,7 +4057,7 @@ megaraid_sysfs_get_ldmap(adapter_t *adapter)
 
        del_timer_sync(timerp);
 
-       up(&raid_dev->sysfs_sem);
+       mutex_unlock(&raid_dev->sysfs_mtx);
 
        return rval;
 }
index 9de803cebd4badec858161d679a0b85905b9026a..626459d1e9021180c2af19e60576a85eeeb37772 100644 (file)
@@ -168,7 +168,7 @@ typedef struct {
  * @hw_error                   : set if FW not responding
  * @fast_load                  : If set, skip physical device scanning
  * @channel_class              : channel class, RAID or SCSI
- * @sysfs_sem                  : semaphore to serialize access to sysfs res.
+ * @sysfs_mtx                  : mutex to serialize access to sysfs res.
  * @sysfs_uioc                 : management packet to issue FW calls from sysfs
  * @sysfs_mbox64               : mailbox packet to issue FW calls from sysfs
  * @sysfs_buffer               : data buffer for FW commands issued from sysfs
@@ -208,7 +208,7 @@ typedef struct {
        int                             hw_error;
        int                             fast_load;
        uint8_t                         channel_class;
-       struct semaphore                sysfs_sem;
+       struct mutex                    sysfs_mtx;
        uioc_t                          *sysfs_uioc;
        mbox64_t                        *sysfs_mbox64;
        caddr_t                         sysfs_buffer;