如何在启用了即时数据压缩的情况下针对UBIFS文件系统在C中检索正确的文件系统指标?

时间:2019-02-22 13:52:08

标签: c filesystems compression ubifs

上下文

我正在使用启用了实时数据压缩的UBIFS文件系统。我需要在C代码中获取正确的文件系统指标(总,已用,可用空间)。

尝试过的事情

我使用statvfs调用成功检索了指标,但是注意到返回的值就像从未压缩过数据一样。从命令行进行sync(8)调用并再次调用C代码后,返回了正确的值,因此在C代码中,我在sync(2)之前包括了对statvfs的调用。再次调用已修改的C代码仍然返回带有值的指标,就好像没有压缩数据一样。然后,我尝试在system("sync")之前进行系统调用statvfs,但是仍然返回了错误的度量标准值。仅在等待10秒钟左右或通过明确的sync(8)调用之后,返回的文件系统指标才正确。

问题

1)为什么在从命令行调用sync(2)system("sync")之前,在C代码中调用statvfssync(8)会有这种区别?

2)如何使用C代码将待处理/缓存的数据提交到磁盘,以便随后的statvfs调用将返回正确的文件系统指标?

0 个答案:

没有答案