|
|
@@ -2970,9 +2970,6 @@ static void sd_read_block_characteristics(struct scsi_disk *sdkp)
|
|
|
if (rot == 1) {
|
|
|
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
|
|
|
blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, q);
|
|
|
- } else {
|
|
|
- blk_queue_flag_clear(QUEUE_FLAG_NONROT, q);
|
|
|
- blk_queue_flag_set(QUEUE_FLAG_ADD_RANDOM, q);
|
|
|
}
|
|
|
|
|
|
if (sdkp->device->type == TYPE_ZBC) {
|
|
|
@@ -3109,6 +3106,15 @@ static int sd_revalidate_disk(struct gendisk *disk)
|
|
|
if (sdkp->media_present) {
|
|
|
sd_read_capacity(sdkp, buffer);
|
|
|
|
|
|
+ /*
|
|
|
+ * set the default to rotational. All non-rotational devices
|
|
|
+ * support the block characteristics VPD page, which will
|
|
|
+ * cause this to be updated correctly and any device which
|
|
|
+ * doesn't support it should be treated as rotational.
|
|
|
+ */
|
|
|
+ blk_queue_flag_clear(QUEUE_FLAG_NONROT, q);
|
|
|
+ blk_queue_flag_set(QUEUE_FLAG_ADD_RANDOM, q);
|
|
|
+
|
|
|
if (scsi_device_supports_vpd(sdp)) {
|
|
|
sd_read_block_provisioning(sdkp);
|
|
|
sd_read_block_limits(sdkp);
|