是否可以创建具有奇数大小的Linux (2.6)块设备(例如环回设备)?我不能让它发生。losetup似乎向下舍入到512字节边界。用户模式Linux ubd设备的ubd设备似乎舍入到512字节边界。在struct request中,我们为读/写操作的块偏移量设置了sector_t __sector。
我问这个问题只是出于教育目的。我可以处理512字节的边界,但我仍然对是否有可能绕过它感兴趣。在这个问题中,我对其他抽象层(例如使用常规文件或字符设备)不感兴趣。
发布于 2010-11-21 20:11:44
不是的。Linux2.6块层不支持小于512字节的任何内容。任何更小的代码(特别是不是2的幂)都需要大量重写代码。
发布于 2010-11-21 19:23:11
这就是块设备而不是字符设备的原因:块的粒度。之所以存在二分法,是因为将一次处理一个块的真实硬件建模为也处理块的抽象,效率要高得多。否则,每个操作都会变成成本更高的计算。
正如您所提到的,绕过它的方法是使用面向字符的设备或抽象。这是Unix设备模型的核心:所有东西都是一系列八位字节,除了只能虚拟化为一个的东西。
https://stackoverflow.com/questions/4237493
复制相似问题