diff --git a/[refs] b/[refs] index 3cd36d353530..44d0eb5fb51b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2ef8919830a262f10fb5e4a685e95f71a64bce6c +refs/heads/master: c0ed79a331caa68ac027dd6afc02bb5b58ef2798 diff --git a/trunk/drivers/scsi/sd.c b/trunk/drivers/scsi/sd.c index bb5b242ac6b4..8613a1317712 100644 --- a/trunk/drivers/scsi/sd.c +++ b/trunk/drivers/scsi/sd.c @@ -769,20 +769,16 @@ static void sd_end_flush(request_queue_t *q, struct request *flush_rq) static int sd_prepare_flush(request_queue_t *q, struct request *rq) { struct scsi_device *sdev = q->queuedata; - struct scsi_disk *sdkp = scsi_disk_get_from_dev(&sdev->sdev_gendev); - int ret = 0; + struct scsi_disk *sdkp = dev_get_drvdata(&sdev->sdev_gendev); - if (sdkp) { - if (sdkp->WCE) { - memset(rq->cmd, 0, sizeof(rq->cmd)); - rq->flags |= REQ_BLOCK_PC | REQ_SOFTBARRIER; - rq->timeout = SD_TIMEOUT; - rq->cmd[0] = SYNCHRONIZE_CACHE; - ret = 1; - } - scsi_disk_put(sdkp); - } - return ret; + if (!sdkp || !sdkp->WCE) + return 0; + + memset(rq->cmd, 0, sizeof(rq->cmd)); + rq->flags |= REQ_BLOCK_PC | REQ_SOFTBARRIER; + rq->timeout = SD_TIMEOUT; + rq->cmd[0] = SYNCHRONIZE_CACHE; + return 1; } static void sd_rescan(struct device *dev)