对jffs2 Linux文件系统的O_DIRECT支持

时间:2011-05-17 11:19:14

标签: linux filesystems linux-kernel jffs2

我尝试使用O_DIRECT打开文件,我们正在使用jffs2

fd = open(filename, O_RDONLY|O_DIRECT|O_SYNC);

但我只得到一个“无效参数”错误。 我也尝试了解决方案 in this SO link但无济于事。 当然,我也在构建源代码时加入“-D_GNU_SOURCE”。

我已经读过tmpfs不支持O_DIRECT,但找不到对jffs2的支持或不支持。 如果有人可以给我证明或不证明jffs2支持和/或我缺少的任何其他东西使O_DIRECT工作。

请注意: 这一切都发生了,因为当我使用fread()/ read()时,Linux似乎自己缓存内存数据。 使用system("echo 3 > /proc/sys/vm/drop_caches");为时已晚,因为我不希望FS首先分配缓存。

谢谢, 濑

1 个答案:

答案 0 :(得分:2)

jffs2不支持O_DIRECT

can see in __dentry_open()为了支持O_DIRECT,文件系统必须提供direct_IO结构的get_xip_mem和/或address_space_operations成员。您同样可以看到jffs2 does not supply these members

目前尚不清楚为什么你如此热衷于避免页面缓存。页面缓存中的页面实际上是“免费的” - 当其他用途需要更多内存时,它们将被回收。

相关问题