Linuxのreiserfs/ext3で、スパースブロックサイズを取得し、データがスパースファイルの指定されたオフセットに存在するかどうかを確認するにはどうすればよいですか?
これを使用して、FUSEを使用した単純なコピーオンライトブロックデバイスを実装したいと思います。
または、ビットマップを別のファイルに保存する方がよいでしょうか。
Linuxのreiserfs/ext3で、スパースブロックサイズを取得し、データがスパースファイルの指定されたオフセットに存在するかどうかを確認するにはどうすればよいですか?
これを使用して、FUSEを使用した単純なコピーオンライトブロックデバイスを実装したいと思います。
または、ビットマップを別のファイルに保存する方がよいでしょうか。
/usr/src/linux/Documentation/filesystems/fiemap.txt
fiemap ioctlは、ユーザースペースがファイルエクステントマッピングを取得するための効率的な方法です。ブロックごとのマッピング(bmapなど)の代わりに、fiemapはエクステントのリストを返します。
git://kernel.ubuntu.com/cking/debug-code/fiemap/に簡単な使用例があります。スパースファイルには、「欠落している」部分のエクステントがありません。
http://lxr.linux.no/#linux+v2.6.33/arch/um/drivers/cow_user.cは、ユーザーモードLinuxがこのために明示的なビットマップFWIWを使用することを示しています。