【发布时间】:2023-03-10 18:29:01
【问题描述】:
我目前正在做块驱动程序。我在测试期间注意到,如果 我的平台是 RHEL6.x/CentOS6.x 我的结构请求开始了 LBA/sector 总是与 8 对齐(例如 0、8、0x10、0x100、0x2508 等) 这实际上是我设计的驱动程序和固件的最佳选择。看来 结构请求总是在那里对齐。
另一方面,如果我在一些旧系统(如 Oracle 5.6)上测试我的驱动程序, 结构请求的起始 LBA 似乎没有对齐 8 - 大多数情况下 LBA 被偏移(例如 0x2507、300f、0x95bd500f、 等等)
我的阻止队列设置,甚至从 sysfs 中查看都表明我的 逻辑块大小和物理块大小分别为 512 和 512, 分别。所以我认为它与4kB无关 部门。触发这种行为的设置可能是什么?是 有一个请求队列或 gendisk 设置来控制这个我可以 不知道吗?还是这取决于 FS 层?希望有人 可以指出来。
谢谢!
【问题讨论】:
-
“所以我认为这与 4kB 扇区无关” -- 为什么不呢?你听说过“前向兼容性”吗?或者当扇区大小为 4K 字节时,512 B/扇区仿真的最佳性能如何?阅读seagate.com/tech-insights/…
-
好吧,我假设是因为我的 sysfs 条目读取了逻辑块和物理块的 512 字节,而没有提及 4kb。其他条目如alignment_offset、minimum_io_size 和optimal_io_size 分别为0、512、0。您建议的任何方式都值得调查,我如何验证前向兼容性在我的新系统中是否有效?所以我将在我的旧系统(如 oel 5.6)中实现它。
标签: linux linux-kernel linux-device-driver