代码之家  ›  专栏  ›  技术社区  ›  pts

奇数(非偶数)大小的Linux块设备

  •  1
  • pts  · 技术社区  · 14 年前

    是否可以创建一个奇数大小的Linux(2.6)块设备(如环回设备)?我不能让它发生。 losetup 似乎向下舍入到512字节的边界。这个 ubd 用户模式Linux设备 ubd公司 设备似乎可以舍入到512字节的边界。在 struct request ,我们有 sector_t __sector 用于读/写操作的块偏移量。

    我问这个问题只是为了教育目的。我可以处理512字节的边界,但我仍然感兴趣的是是否可以绕过它。在这个问题上,我对其他抽象层(如使用常规文件或字符设备)不感兴趣。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Chris    14 年前

    不,Linux2.6块层不能理解任何小于512字节的内容。任何较小的(特别是不是2的幂)都需要大量代码的重写。

        2
  •  1
  •   msw    14 年前

    这就是块设备代替字符设备的原因:块粒度。这种二分法的存在是因为它能更有效地模拟真实的硬件,这些硬件一次工作一个块,作为一个抽象块,也可以处理块。否则,将使每个操作都变成一个更昂贵的计算。

    绕过它的方法是,正如您所提到的,使用面向字符的设备或抽象。这是Unix设备模型的核心:除了只能作为一个虚拟化的东西之外,所有东西都是一系列八位字节。