Sample Header Ad - 728x90

What could explain this strange sparse file handling of/in tmpfs?

16 votes
2 answers
1913 views
On my ext4 filesystem partition I can run the following code: fs="/mnt/ext4" #create sparse 100M file on ${fs} dd if=/dev/zero \ of=${fs}/sparse100M conv=sparse seek=$((100*2*1024-1)) count=1 2> /dev/null #show its actual used size before echo "Before:" ls ${fs}/sparse100M -s #setting the sparse file up as loopback and run md5sum on loopback losetup /dev/loop0 ${fs}/sparse100M md5sum /dev/loop0 #show its actual used size afterwards echo "After:" ls ${fs}/sparse100M -s #release loopback and remove file losetup -d /dev/loop0 rm ${fs}/sparse100M which yields Before: 0 sparse100M 2f282b84e7e608d5852449ed940bfc51 /dev/loop0 After: 0 sparse100M Doing the very same thing on tmpfs as with: fs="/tmp" yields Before: 0 /tmp/sparse100M 2f282b84e7e608d5852449ed940bfc51 /dev/loop0 After: 102400 /tmp/sparse100M which basically means that something I expected to merely read the data, caused the sparse file to "blow up like a balloon"? I expect that is because of less perfect support for sparse file in tmpfs filesystem, and in particular because of the missing FIEMAP ioctl, but I am not sure what causes this behaviour? Can you tell me?
Asked by humanityANDpeace (15072 rep)
Mar 8, 2017, 11:54 PM
Last activity: Aug 23, 2024, 11:27 PM