The block layer keeps q->limits.discard_granularity in bytes, but iblock (and the SCSI Block Limits VPD page) keep unmap_granularity in blocks. Report the correct value when exporting block devices by dividing to convert bytes to blocks.
Unified · Split
| @@ -181,7 +181,7 @@ static struct se_device *iblock_create_virtdevice( · 180 unmodified lines | |||
| 181 | */ | 181 | */ |
| 182 | dev->se_sub_dev->se_dev_attrib.max_unmap_block_desc_count = 1; | 182 | dev->se_sub_dev->se_dev_attrib.max_unmap_block_desc_count = 1; |
| 183 | dev->se_sub_dev->se_dev_attrib.unmap_granularity = | 183 | dev->se_sub_dev->se_dev_attrib.unmap_granularity = |
| 184 | q->limits.discard_granularity; | 184 | q->limits.discard_granularity >> 9; |
| 185 | dev->se_sub_dev->se_dev_attrib.unmap_granularity_alignment = | 185 | dev->se_sub_dev->se_dev_attrib.unmap_granularity_alignment = |
| 186 | q->limits.discard_alignment; | 186 | q->limits.discard_alignment; |
| 187 | 187 | ||