diff options
Diffstat (limited to 'drivers/ata/libata-scsi.c')
| -rw-r--r-- | drivers/ata/libata-scsi.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 30ea95f43e7..d51f9795c06 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c @@ -1089,21 +1089,21 @@ static int atapi_drain_needed(struct request *rq)  static int ata_scsi_dev_config(struct scsi_device *sdev,  			       struct ata_device *dev)  { +	struct request_queue *q = sdev->request_queue; +  	if (!ata_id_has_unload(dev->id))  		dev->flags |= ATA_DFLAG_NO_UNLOAD;  	/* configure max sectors */ -	blk_queue_max_hw_sectors(sdev->request_queue, dev->max_sectors); +	blk_queue_max_hw_sectors(q, dev->max_sectors);  	if (dev->class == ATA_DEV_ATAPI) { -		struct request_queue *q = sdev->request_queue;  		void *buf;  		sdev->sector_size = ATA_SECT_SIZE;  		/* set DMA padding */ -		blk_queue_update_dma_pad(sdev->request_queue, -					 ATA_DMA_PAD_SZ - 1); +		blk_queue_update_dma_pad(q, ATA_DMA_PAD_SZ - 1);  		/* configure draining */  		buf = kmalloc(ATAPI_MAX_DRAIN, q->bounce_gfp | GFP_KERNEL); @@ -1131,8 +1131,7 @@ static int ata_scsi_dev_config(struct scsi_device *sdev,  			"sector_size=%u > PAGE_SIZE, PIO may malfunction\n",  			sdev->sector_size); -	blk_queue_update_dma_alignment(sdev->request_queue, -				       sdev->sector_size - 1); +	blk_queue_update_dma_alignment(q, sdev->sector_size - 1);  	if (dev->flags & ATA_DFLAG_AN)  		set_bit(SDEV_EVT_MEDIA_CHANGE, sdev->supported_events); @@ -1145,6 +1144,8 @@ static int ata_scsi_dev_config(struct scsi_device *sdev,  		scsi_adjust_queue_depth(sdev, MSG_SIMPLE_TAG, depth);  	} +	blk_queue_flush_queueable(q, false); +  	dev->sdev = sdev;  	return 0;  }  |