+static DEFINE_MUTEX(idescsi_ref_mutex);
+
+#define ide_scsi_g(disk) \
+ container_of((disk)->private_data, struct ide_scsi_obj, driver)
+
+static struct ide_scsi_obj *ide_scsi_get(struct gendisk *disk)
+{
+ struct ide_scsi_obj *scsi = NULL;
+
+ mutex_lock(&idescsi_ref_mutex);
+ scsi = ide_scsi_g(disk);
+ if (scsi)
+ scsi_host_get(scsi->host);
+ mutex_unlock(&idescsi_ref_mutex);
+ return scsi;
+}
+
+static void ide_scsi_put(struct ide_scsi_obj *scsi)
+{
+ mutex_lock(&idescsi_ref_mutex);
+ scsi_host_put(scsi->host);
+ mutex_unlock(&idescsi_ref_mutex);
+}
+