|
@@ -47,6 +47,7 @@
|
|
|
#include <linux/ide.h>
|
|
|
#include <linux/scatterlist.h>
|
|
|
#include <linux/delay.h>
|
|
|
+#include <linux/mutex.h>
|
|
|
|
|
|
#include <asm/io.h>
|
|
|
#include <asm/bitops.h>
|
|
@@ -109,7 +110,7 @@ typedef struct ide_scsi_obj {
|
|
|
unsigned long log; /* log flags */
|
|
|
} idescsi_scsi_t;
|
|
|
|
|
|
-static DECLARE_MUTEX(idescsi_ref_sem);
|
|
|
+static DEFINE_MUTEX(idescsi_ref_mutex);
|
|
|
|
|
|
#define ide_scsi_g(disk) \
|
|
|
container_of((disk)->private_data, struct ide_scsi_obj, driver)
|
|
@@ -118,19 +119,19 @@ static struct ide_scsi_obj *ide_scsi_get(struct gendisk *disk)
|
|
|
{
|
|
|
struct ide_scsi_obj *scsi = NULL;
|
|
|
|
|
|
- down(&idescsi_ref_sem);
|
|
|
+ mutex_lock(&idescsi_ref_mutex);
|
|
|
scsi = ide_scsi_g(disk);
|
|
|
if (scsi)
|
|
|
scsi_host_get(scsi->host);
|
|
|
- up(&idescsi_ref_sem);
|
|
|
+ mutex_unlock(&idescsi_ref_mutex);
|
|
|
return scsi;
|
|
|
}
|
|
|
|
|
|
static void ide_scsi_put(struct ide_scsi_obj *scsi)
|
|
|
{
|
|
|
- down(&idescsi_ref_sem);
|
|
|
+ mutex_lock(&idescsi_ref_mutex);
|
|
|
scsi_host_put(scsi->host);
|
|
|
- up(&idescsi_ref_sem);
|
|
|
+ mutex_unlock(&idescsi_ref_mutex);
|
|
|
}
|
|
|
|
|
|
static inline idescsi_scsi_t *scsihost_to_idescsi(struct Scsi_Host *host)
|