As far as I remember, I have implemented and used the script on 3.8.3 (or 3.7.5?) successfully. But after upgrading to other kernel version it broke: now "mount" hangs (in uninterruptible sleep), consuming 100% CPU and eating all memory. The script: --- modprobe zram num_devices=2 sleep 1 echo 1500M > /sys/block/zram0/disksize echo 100M > /sys/block/zram1/disksize MS=$(blockdev --getsize /dev/zram0) WS=$(blockdev --getsize /dev/zram1) DS=$(blockdev --getsize /dev/mapper/cryptie4-ff) MN=$(printf '%d:%d' `stat -Lc '0x%t 0x%T' /dev/zram0`) WN=$(printf '%d:%d' `stat -Lc '0x%t 0x%T' /dev/zram1`) DN=$(printf '%d:%d' `stat -Lc '0x%t 0x%T' /dev/mapper/cryptie4-ff`) pv /dev/mapper/cryptie4-ff | hashed_update /dev/stdin NULL /dev/zram0 /tmp/ff.md5 65536 dmsetup create ff --table "0 $MS snapshot-origin $MN" # /dev/mapper/ff /mnt/ff ext4 noatime,noauto 0 0 mount /mnt/ff # after this command ff_snap should begin working dmsetup create ff_disk --table "0 $DS snapshot-origin $DN" --- So far I have just abandoned the script and hasn't experimented more. Shall I try to isolate and maybe bisect the problem?
What is cryptie4-ff ? it is linear or raid setup for dmsetup. What is hashed_update. Seems like only part of the script is posted. Can you please get a working standalone independent script ?
cryptie4-ff: 0 3072000 linear 251:0 672802816 Maybe I'll try to make special stand-alone script for demonstrating the problem.
Created attachment 216451 [details] Stand-alone version of the script which crashes my system Added the script
Not related to ext4 . I can reproduce this with below script and i think dm-devel@redhat.com should be contacted. I tested on Linux junk-foo 4.2.0-35-generic from Ubuntu (15.10 ) x64. Linux junk-foo 4.2.0-35-generic #40-Ubuntu SMP Tue Mar 15 22:15:45 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux Here is a script that crashes the kernel for me with out of memory. Looks to be a dm problem because it occurs with dd,mkfs.xfs,mkfs.vat ,without zram ie with losetup. Here is the script.Should be run as root for losetup and dmsetup permissions. #!/bin/bash fallocate -l 50M 50M_file_unused fallocate -l 60M 60M_file_unused losetup /dev/loop4 50M_file_unused losetup /dev/loop5 60M_file_unused MS=$(blockdev --getsize /dev/loop4) WS=$(blockdev --getsize /dev/loop5) echo "0 $MS linear /dev/loop4 0 \n $MS $WS linear /dev/loop5 0" | dmsetup create cryptie4-ff DS=$(blockdev --getsize /dev/mapper/cryptie4-ff) MN=$(printf '%d:%d' `stat -Lc '0x%t 0x%T' /dev/loop4`) WN=$(printf '%d:%d' `stat -Lc '0x%t 0x%T' /dev/loop5`) DN=$(printf '%d:%d' `stat -Lc '0x%t 0x%T' /dev/mapper/cryptie4-ff`) #pv /dev/mapper/cryptie4-ff | hashed_update /dev/stdin NULL /dev/zram0 /tmp/ff.md5 65536 pv /dev/mapper/cryptie4-ff dmsetup create ff --table "0 $MS snapshot-origin $MN" After this doing this dd if=/dev/zero of=/dev/mapper/ff or mkfs.xfs /mkfs.ext4 on /dev/mapper/ff will fail.