views:

88

answers:

2

How to get sparse block size and check if data is present at the given offset in sparse file in reiserfs/ext3 in Linux?

I want to use it to implement simple copy-on-write block device using FUSE.

Or I should better keep a bitmap in a separate file?

+1  A: 

Well, http://lxr.linux.no/#linux+v2.6.33/arch/um/drivers/cow_user.c indicates that User Mode Linux uses an explicit bitmap for this, FWIW.

SamB
Looks like there are already COW devices in Linux (somewhere in UML or in Device Mapper). FUSE thing is probably just not needed...
Vi
+1  A: 

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

The fiemap ioctl is an efficient method for userspace to get file extent mappings. Instead of block-by-block mapping (such as bmap), fiemap returns a list of extents.

There's a quick example of usage in git://kernel.ubuntu.com/cking/debug-code/fiemap/. A sparse file will lack extents for the "missing" portions.

ephemient