编译:
#include<fcntl.h>前 要添加#define __USE_GNU 1,否则O_DIRECT没有定义。
文件读写的缓冲区要用posix_memalign对齐(2.6中是512字节),文件读写的大小也要是 512倍数
dumpe2fs /dev/sda6|grep -i "block size"
... 4096
现在主要是解决buffer的地址4096对齐的问题,用gcc的编译选项定义全局变量buffer:
typedef char _aligned_char __attribute__ ((aligned (8192)));
_aligned_char buffer[8192];