我正在调试一个fuse文件系统,它报告了du的错误大小。事实证明,这是在将st_size / st_blksize *放入st_blocks of stat结构中。stat(2)的Linux手册页面上写着:
struct stat {
…
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated