Что могло бы объяснить эту странную разреженную обработку файлов в / tmpfs?

На моем разделе файловой системы ext4 я могу запустить следующий код:

 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 

который дает

 Before: 0 sparse100M 2f282b84e7e608d5852449ed940bfc51 /dev/loop0 After: 0 sparse100M 

Выполнение той же самой вещи на tmpfs, что и с:

 fs="/tmp" 

доходность

 Before: 0 /tmp/sparse100 2f282b84e7e608d5852449ed940bfc51 /dev/loop0 After: 102400 /tmp/sparse100M 

что в основном означает, что что-то, что я ожидал, просто прочитать данные, вызвало разреженный файл «взорваться, как воздушный шар»?

Я ожидаю, что это из-за менее совершенной поддержки разреженного файла в файловой системе tmpfs и, в частности, из-за отсутствия FIEMAP ioctl, но я не уверен, что вызывает это поведение? Можешь сказать мне?