Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 有没有办法让内核将块设备视为大于4k的块大小?_Linux_Linux Kernel_Block_Kernel Module - Fatal编程技术网

Linux 有没有办法让内核将块设备视为大于4k的块大小?

Linux 有没有办法让内核将块设备视为大于4k的块大小?,linux,linux-kernel,block,kernel-module,Linux,Linux Kernel,Block,Kernel Module,回到这个问题,现在已经4岁了 我是一个内核新手,所以我不知道太多,这就是为什么我在这里问。 我知道512字节的扇区是linux世界的中心。通过尝试我知道,如果我创建一个块设备通过blk_queue_logical_block_size()任何大于4096的值,我会在内核中得到错误空指针异常,这可能是西奥·曹在上面的问题中解释的原因 他提到必须执行内核已经执行的读更新写序列。也许这已经改变了。 如果我创建了一个具有4k块的块设备,并将1个字节添加到第一个块中,内核将执行读取、更新一个字节并为该块

回到这个问题,现在已经4岁了

我是一个内核新手,所以我不知道太多,这就是为什么我在这里问。 我知道512字节的扇区是linux世界的中心。通过尝试我知道,如果我创建一个块设备通过blk_queue_logical_block_size()任何大于4096的值,我会在内核中得到错误空指针异常,这可能是西奥·曹在上面的问题中解释的原因

他提到必须执行内核已经执行的读更新写序列。也许这已经改变了。 如果我创建了一个具有4k块的块设备,并将1个字节添加到第一个块中,内核将执行读取、更新一个字节并为该块发出写入命令

实际上,它发出了4个4k读取,我认为这是一个主动预取。 我想知道的是,内核中是否有一个设置仍然允许内核内部使用4k块,这样就不会导致4k页面大小出现问题,而是让内核向我的块设备提供大于4k的块

所有读更新写的东西都在那里的某个地方,因为上面的问题已经有4年了,我想可能已经发生了一些变化,可能会使现在的答案有所不同

还有一系列其他功能(blk_队列\物理\块\大小、blk_队列\最大\段\大小等),我不能100%确定它们是如何工作的

我搜索的所有block device文章都没有考虑这个问题

有人知道在linux内核中(当前版本很好)是否有可能让它将块设备视为大于4k的块

谢谢你在这一过程中给我的建议和建议,我在这方面还是有点新手


这是我正在编写的一个虚拟块设备驱动程序,它不映射到物理磁盘,因此块大小不必匹配任何类型的现有硬件要求。

如果我是你,我会在lkml上发布这个问题。像对待灰尘一样对待吗?不,从来没见过——只有那些老家伙们时不时地互相咀嚼。你也可以试着直接邮寄西奥·曹。一定要简明扼要,选择一个好的主题行。直接写西奥需要一个勇敢的人。。。。好的,我会试试的,谢谢。一定要在这里仔细阅读:你想做什么还不清楚。为什么需要逻辑块大小>16kb的块设备?你想达到什么目的?如果我是你,我会把这个问题贴在lkml上。被当作垃圾处理?不,从来没见过——只有那些老家伙们时不时地互相咀嚼。你也可以试着直接邮寄西奥·曹。一定要简明扼要,选择一个好的主题行。直接写西奥需要一个勇敢的人。。。。好的,我会试试的,谢谢。一定要在这里仔细阅读:你想做什么还不清楚。为什么需要逻辑块大小>16kb的块设备?你想达到什么目标?