Hello, for energy saving purposes I try to buffer disk accesses in RAM by making the mounted (LVM) volume a snapshot and putting the COW device on tmpfs (loop device over a sparse file) so that I can flush the changes later by making the volume a snapshot-merge target. Note: I am NOT trying to make a snapshot of the root volume! (This has obviously been done sucessfully by others.) This works for a data volume but the system hangs when trying this with the root volume. The interesting point: The problem seems not to be caused by an access to the root filesystem. I have created a chroot environment in a tmpfs volume (and sucessfully done this with a data volume from there). The relevant part of the script (located in the chroot environment, of course) is: dmsetup suspend "$cryptodevice_name" || exit 1 dmsetup load "$cryptodevice_name" --table "0 ${origin_block_count} \ snapshot-merge ${origin_major_minor} ${cow_major_minor} P 8" || exit 1 dmsetup resume "$cryptodevice_name" || exit 1 The hanging occurs during the "dmsetup load". I hat a look at it by strace. This is what happens with the data volume: [...] stat("/dev/mapper/control", {st_mode=S_IFCHR|0600, st_rdev=makedev(10, 236), ...}) = 0 open("/dev/mapper/control", O_RDWR) = 3 open("/proc/devices", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f855bec6000 read(4, "Character devices:\n 1 mem\n 4 /"..., 1024) = 490 close(4) = 0 munmap(0x7f855bec6000, 4096) = 0 ioctl(3, DM_VERSION, 0x6162a0) = 0 ioctl(3, DM_TABLE_LOAD, 0x6161f0) = 0 close(3) = 0 exit_group(0) = ? [...] The same call for the root volume leads to [...] ioctl(3, DM_TABLE_LOAD, 0x6161f0) = (I am not sure about the 0x6161f0) The exit code never appears. I do not know whether this is a problem of the ioctl or one of strace. But as the volume has already been suspended at that time I do not see any reason why strace should be affected. The system is not completely dead but no useful actitivy is possible any more. Issuing a suspend and a resume immediately afterwards (without the load) does not kill the system. So the problem seems to be about the dmsetup load. This is openSUSE 11.4. start cmd:> uname -a Linux inno 2.6.37.6-0.7-desktop #1 SMP PREEMPT 2011-07-21 02:17:24 +0200 x86_64 x86_64 x86_64 GNU/Linux Best regards, Hauke -- PGP: D44C 6A5B 71B0 427C CED3 025C BD7D 6D27 ECCB 5814
Attachment:
signature.asc
Description: This is a digitally signed message part.
-- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel