Messages in this thread | | | Subject | Re: Interpreting /sys/block/<disk>/{,<partition>}/discard_alignment | From | "Martin K. Petersen" <> | Date | Thu, 10 Jan 2019 19:02:25 -0500 |
| |
James,
> Q1 - I'm hoping you can clarify how this should be interpreted. > > I originally took this to mean the number of bytes into the first > discard_granularity block that the partition resides at. i.e. If > discard_granularity_block is 128MB, and partition 1 starts at sector > 2048 with 512 byte sectors, that this should return 2048*512=1048576 > (1MB.)
The alignment offset is the offset for the given block device. It doesn't matter whether the block device in question is a partition, DM device or a full device. A block device is a block device.
The common alignment scenario is 3584 on a device with 4K physical blocks. That's because of the 63-sector legacy FAT partition table offset. Which essentially means that the first LBA is misaligned and the first aligned HBA is 7.
Many of the first 512e drives shipped with that intentional misalignment as default. And you could switch it to 0-aligned via a jumper. These days all drives are 0-aligned.
> Q2 - At https://lkml.org/lkml/2018/12/5/1693 --- I saw you recently > said "... there are not many devices that actually report a non-zero > discard alignment..." Does this mean that every filesystem needs to > look at the partition table to determine its correct value on its own, > rather than using discard_alignment?
No, it needs to look at the device topology for the block device it is on. I don't believe we ever wired up an ioctl for the discard alignment so you'll have to find your device in sysfs. There's an alignment ioctl for the "regular" block alignment, though.
-- Martin K. Petersen Oracle Linux Engineering
| |