繁体   English   中英

如何检查块是否存在于稀疏文件中(对于简单的写时复制)?

[英]How to check if the block is present in a sparse file (for simple copy-on-write)?

如何获取稀疏块大小并检查Linux中reiserfs / ext3中稀疏文件中给定偏移量处是否存在数据?

我想用它来实现使用FUSE的简单的copy-on-write块设备。

或者我最好将位图保存在单独的文件中?

/usr/src/linux/Documentation/filesystems/fiemap.txt

fiemap ioctl是用户空间获取文件范围映射的有效方法。 fiemap不是逐块映射(例如bmap),而是返回范围列表。

git中有一个快速的使用示例://kernel.ubuntu.com/cking/debug-code/ fiemap /。 稀疏文件将缺少“缺失”部分的范围。

从Linux 3.1开始, lseek提供了标志SEEK_HOLESEEK_DATA来导航到一个洞的开头或结尾,所以这可能是基于ioctl解决方案的替代品。 在实践中没有尝试过,所以我没有任何实际经验来比较这两者。

好吧, http://lxr.linux.no/#linux+v2.6.33/arch/um/drivers/cow_user.c表示用户模式Linux为此使用了一个显式位图FWIW。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM