[Parted-maintainers] Bug#923561: parted: Incorrect optimal alignment for USB device

Kevin Locke kevin at kevinlocke.name
Mon Mar 4 16:50:10 GMT 2019


On Mon, 2019-03-04 at 10:01 -0500, Phillip Susi wrote:
> Interesting.  It sounds like USB and MD are using optimal_io_size in
> fundamentally incompatible ways.  The question then is: is USB doing the
> wrong thing ( and should be fixed ), or is the very definition of
> optimal_io_size fundamentally broken?

optimal_io_size is defined in the kernel ABI[1] as "the preferred
request size for workloads where sustained throughput is desired".  In
this case, I think it comes from scsi_disk.opt_xfer_blocks[2] which
comes from the VPD block limits page[3] which my disk reports as 65535
blocks (according to sg_vpd).

The definition seems reasonable, but it would not surprise me if 65535
were bogus.  I am not familiar enough with USB+UAS to know if this
might be an optimal size for the protocols involved.  I can raise the
issue on linux-scsi/linux-usb.

However, whether or not this is changed in the kernel, I would argue
it should be handled in parted.  Both to support previous+current
kernels and because I think the optimal_io_size ABI definition allows
optimal_io_size which is not a multiple of minimum_io_size for
transports where that truly is the case.

Best,
Kevin

P.S.  libfdisk from util-linux has also applied the same fix as
cryptsetup of ignoring optimal_io_size if it is not a multiple of
minimum_io_size.[4]

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing/sysfs-block?h=v5.0#n134
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/sd.c?h=v5.0#n3137
[3]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/sd.c?h=v5.0#n2886
[4]: https://github.com/karelzak/util-linux/commit/acb7651f8



More information about the Parted-maintainers mailing list