diff options
Diffstat (limited to 'drivers/scsi/sd.c')
| -rw-r--r-- | drivers/scsi/sd.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 8ca9299ffd36..a793cb08d025 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -3169,9 +3169,11 @@ static int sd_revalidate_disk(struct gendisk *disk)  	if (sd_validate_opt_xfer_size(sdkp, dev_max)) {  		q->limits.io_opt = logical_to_bytes(sdp, sdkp->opt_xfer_blocks);  		rw_max = logical_to_sectors(sdp, sdkp->opt_xfer_blocks); -	} else +	} else { +		q->limits.io_opt = 0;  		rw_max = min_not_zero(logical_to_sectors(sdp, dev_max),  				      (sector_t)BLK_DEF_MAX_SECTORS); +	}  	/* Do not exceed controller limit */  	rw_max = min(rw_max, queue_max_hw_sectors(q)); @@ -3187,7 +3189,8 @@ static int sd_revalidate_disk(struct gendisk *disk)  	sdkp->first_scan = 0; -	set_capacity(disk, logical_to_sectors(sdp, sdkp->capacity)); +	set_capacity_revalidate_and_notify(disk, +		logical_to_sectors(sdp, sdkp->capacity), false);  	sd_config_write_same(sdkp);  	kfree(buffer);  |