524288
524288
524288
524288
524288
172020
0
0
Error reading file: Invalid argument
fd: 3 buffer: 0x7f4140e88000 BUFFER_SIZE: 524288
尝试读取同时编写的数据时,这意味着读()失败。 我检查了什么:
使用aligned_alloc(4096,buffer_size)正确对齐缓冲区。 Buffer_Size是4096的倍数,可确保它符合O_Direct对齐要求。 FD在发生错误之前是有效的。
文件存在并通过另一个过程不断更新。 尾 Filesystem:Ext4(本地SSD) CPU型号:Intel(R)Core(TM)I9-14900K Linux:5.15.77-1-LTS问题
为什么读取()到达写作点时返回einval?有一种方法可以等待更多数据,而不是在读取()到达不成文的部分时失败?
对O_Direct如何与并发写作相互作用的任何洞察力都将不胜感激!
在艾伦的评论中建议:
阅读必须始终从偏移量开始,这是块大小的倍数,在读取没有返回块大小的读取倍数之后,您需要寻找回到块的开始