On Mon, Mar 26, 2012 at 6:18 PM, Bob Friesenhahn
> On Mon, 26 Mar 2012, Andrew Gabriel wrote:
>> I just played and knocked this up (note the stunning lack of comments,
>> missing optarg processing, etc)...
>> Give it a list of files to check...
> This is a cool program, but programmers were asking (and answering) this
> same question 20+ years ago before there was anything like SEEK_HOLE.
> If file space usage is less than file directory size then it must contain a
> hole. Even for compressed files, I am pretty sure that Solaris reports the
> uncompressed space usage.
That's not the case.
# zfs create -o compression=on rpool/junk
# perl -e 'print "foo" x 100000'> /rpool/junk/foo
# ls -ld /rpool/junk/foo
-rw-r--r-- 1 root root 300000 Mar 26 18:25 /rpool/junk/foo
# du -h /rpool/junk/foo
# truss -t stat -v stat du /rpool/junk/foo
lstat64("foo", 0x08047C40) = 0
d=0x02B90028 i=8 m=0100644 l=1 u=0 g=0 sz=300000
at = Mar 26 18:25:25 CDT 2012 [ 1332804325.742827733 ]
mt = Mar 26 18:25:25 CDT 2012 [ 1332804325.889143166 ]
ct = Mar 26 18:25:25 CDT 2012 [ 1332804325.889143166 ]
bsz=131072 blks=32 fs=zfs
Notice that it says it has 32 512 byte blocks.
The mechanism you suggest does work for every other file system that
I've tried it on.
zfs-discuss mailing list