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
Last activity: Aug 23, 2024, 11:27 PM