6

Linuxのreiserfs/ext3で、スパースブロックサイズを取得し、データがスパースファイルの指定されたオフセットに存在するかどうかを確認するにはどうすればよいですか?

これを使用して、FUSEを使用した単純なコピーオンライトブロックデバイスを実装したいと思います。

または、ビットマップを別のファイルに保存する方がよいでしょうか。

4

3 に答える 3

5

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

fiemap ioctlは、ユーザースペースがファイルエクステントマッピングを取得するための効率的な方法です。ブロックごとのマッピング(bmapなど)の代わりに、fiemapはエクステントのリストを返します。

git://kernel.ubuntu.com/cking/debug-code/fiemap/に簡単な使用例があります。スパースファイルには、「欠落している」部分のエクステントがありません。

于 2010-04-01T22:22:51.513 に答える
2

Linux 3.1以降、lseekフラグSEEK_HOLEを提供し、穴の最初または最後に移動するため、これはベースのソリューションSEEK_DATAの代替となる可能性があります。どちらも実際に試したことがないので、2つを比較する実際の経験はありません。ioctl

于 2012-09-06T12:17:03.113 に答える
1

http://lxr.linux.no/#linux+v2.6.33/arch/um/drivers/cow_user.cは、ユーザーモードLinuxがこのために明示的なビットマップFWIWを使用することを示しています

于 2010-04-01T20:32:51.387 に答える