return BLKPREP_KILL;
 }
 
-static int scsi_issue_flush_fn(struct request_queue *q, struct gendisk *disk,
-                              sector_t *error_sector)
-{
-       struct scsi_device *sdev = q->queuedata;
-       struct scsi_driver *drv;
-
-       if (sdev->sdev_state != SDEV_RUNNING)
-               return -ENXIO;
-
-       drv = *(struct scsi_driver **) disk->private_data;
-       if (drv->issue_flush)
-               return drv->issue_flush(&sdev->sdev_gendev, error_sector);
-
-       return -EOPNOTSUPP;
-}
-
 static struct scsi_cmnd *scsi_get_cmd_from_req(struct scsi_device *sdev,
                struct request *req)
 {
                return NULL;
 
        blk_queue_prep_rq(q, scsi_prep_fn);
-       blk_queue_issue_flush_fn(q, scsi_issue_flush_fn);
        blk_queue_softirq_done(q, scsi_softirq_done);
        return q;
 }
 
        },
        .rescan                 = sd_rescan,
        .init_command           = sd_init_command,
-       .issue_flush            = sd_issue_flush,
 };
 
 /*
        return 0;
 }
 
-static int sd_issue_flush(struct device *dev, sector_t *error_sector)
+static int sd_issue_flush(struct request_queue *q, struct gendisk *disk,
+                         sector_t *error_sector)
 {
        int ret = 0;
-       struct scsi_disk *sdkp = scsi_disk_get_from_dev(dev);
+       struct scsi_device *sdp = q->queuedata;
+       struct scsi_disk *sdkp;
+
+       if (sdp->sdev_state != SDEV_RUNNING)
+               return -ENXIO;
+
+       sdkp = scsi_disk_get_from_dev(&sdp->sdev_gendev);
 
        if (!sdkp)
                return -ENODEV;
 
        sd_revalidate_disk(gd);
 
+       blk_queue_issue_flush_fn(sdp->request_queue, sd_issue_flush);
+
        gd->driverfs_dev = &sdp->sdev_gendev;
        gd->flags = GENHD_FL_DRIVERFS;
        if (sdp->removable)
 
 
        int (*init_command)(struct scsi_cmnd *);
        void (*rescan)(struct device *);
-       int (*issue_flush)(struct device *, sector_t *);
-       int (*prepare_flush)(struct request_queue *, struct request *);
 };
 #define to_scsi_driver(drv) \
        container_of((drv), struct scsi_driver, gendrv)
 
 static int sd_resume(struct device *dev);
 static void sd_rescan(struct device *);
 static int  sd_init_command(struct scsi_cmnd *);
-static int  sd_issue_flush(struct device *, sector_t *);
-static void sd_prepare_flush(struct request_queue *, struct request *);
 static void sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer);
 static void scsi_disk_release(struct class_device *cdev);
 static void sd_print_sense_hdr(struct scsi_disk *, struct scsi_sense_hdr *);