@@ -1250,7 +1250,7 @@ static int virtblk_read_limits(struct virtio_blk *vblk,
12501250 struct queue_limits * lim )
12511251{
12521252 struct virtio_device * vdev = vblk -> vdev ;
1253- u32 v , blk_size , max_size , sg_elems , opt_io_size ;
1253+ u32 v , max_size , sg_elems , opt_io_size ;
12541254 u32 max_discard_segs = 0 ;
12551255 u32 discard_granularity = 0 ;
12561256 u16 min_io_size ;
@@ -1289,46 +1289,36 @@ static int virtblk_read_limits(struct virtio_blk *vblk,
12891289 lim -> max_segment_size = max_size ;
12901290
12911291 /* Host can optionally specify the block size of the device */
1292- err = virtio_cread_feature (vdev , VIRTIO_BLK_F_BLK_SIZE ,
1292+ virtio_cread_feature (vdev , VIRTIO_BLK_F_BLK_SIZE ,
12931293 struct virtio_blk_config , blk_size ,
1294- & blk_size );
1295- if (!err ) {
1296- err = blk_validate_block_size (blk_size );
1297- if (err ) {
1298- dev_err (& vdev -> dev ,
1299- "virtio_blk: invalid block size: 0x%x\n" ,
1300- blk_size );
1301- return err ;
1302- }
1303-
1304- lim -> logical_block_size = blk_size ;
1305- } else
1306- blk_size = lim -> logical_block_size ;
1294+ & lim -> logical_block_size );
13071295
13081296 /* Use topology information if available */
13091297 err = virtio_cread_feature (vdev , VIRTIO_BLK_F_TOPOLOGY ,
13101298 struct virtio_blk_config , physical_block_exp ,
13111299 & physical_block_exp );
13121300 if (!err && physical_block_exp )
1313- lim -> physical_block_size = blk_size * (1 << physical_block_exp );
1301+ lim -> physical_block_size =
1302+ lim -> logical_block_size * (1 << physical_block_exp );
13141303
13151304 err = virtio_cread_feature (vdev , VIRTIO_BLK_F_TOPOLOGY ,
13161305 struct virtio_blk_config , alignment_offset ,
13171306 & alignment_offset );
13181307 if (!err && alignment_offset )
1319- lim -> alignment_offset = blk_size * alignment_offset ;
1308+ lim -> alignment_offset =
1309+ lim -> logical_block_size * alignment_offset ;
13201310
13211311 err = virtio_cread_feature (vdev , VIRTIO_BLK_F_TOPOLOGY ,
13221312 struct virtio_blk_config , min_io_size ,
13231313 & min_io_size );
13241314 if (!err && min_io_size )
1325- lim -> io_min = blk_size * min_io_size ;
1315+ lim -> io_min = lim -> logical_block_size * min_io_size ;
13261316
13271317 err = virtio_cread_feature (vdev , VIRTIO_BLK_F_TOPOLOGY ,
13281318 struct virtio_blk_config , opt_io_size ,
13291319 & opt_io_size );
13301320 if (!err && opt_io_size )
1331- lim -> io_opt = blk_size * opt_io_size ;
1321+ lim -> io_opt = lim -> logical_block_size * opt_io_size ;
13321322
13331323 if (virtio_has_feature (vdev , VIRTIO_BLK_F_DISCARD )) {
13341324 virtio_cread (vdev , struct virtio_blk_config ,
@@ -1422,7 +1412,7 @@ static int virtblk_read_limits(struct virtio_blk *vblk,
14221412 lim -> discard_granularity =
14231413 discard_granularity << SECTOR_SHIFT ;
14241414 else
1425- lim -> discard_granularity = blk_size ;
1415+ lim -> discard_granularity = lim -> logical_block_size ;
14261416 }
14271417
14281418 if (virtio_has_feature (vdev , VIRTIO_BLK_F_ZONED )) {
@@ -1453,6 +1443,7 @@ static int virtblk_probe(struct virtio_device *vdev)
14531443 struct virtio_blk * vblk ;
14541444 struct queue_limits lim = {
14551445 .features = BLK_FEAT_ROTATIONAL ,
1446+ .logical_block_size = SECTOR_SIZE ,
14561447 };
14571448 int err , index ;
14581449 unsigned int queue_depth ;
0 commit comments