[maintainers of zram CC:ed, in order to alert them of this incompatibility with a setup published by Gentoo and possibly picked up by others]

[Pacho Ramos CC:ed as a person who asked about zram here before and who can remove the non-working instruction listed at http://wiki.gentoo.org/wiki/Zram#Using_existing_tools ]

I wrote:

I have upgraded systemd from 212 to 213 on two my Gentoo boxes, and see the 
same regression here: zram swap space does not get activated. It looks like 
systemd tries to activate swap before the RUN+=mkswap part of the udev rule 
finishes.

Here are the relevant lines from my configuration files. Are they indeed 
supposed to work, or were working only by pure luck?

$ cat /etc/modules-load.d/zram.conf
zram

$ cat /etc/modprobe.d/zram.conf
options zram num_devices=4

$ cat /etc/udev/rules.d/01-zram.rules
KERNEL=="zram[0-9]", SUBSYSTEM=="block", DRIVER=="", ACTION=="add", ATTR{disksize}=="0", 
ATTR{disksize}="1536M", RUN+="/sbin/mkswap $env{DEVNAME}"

$ grep zram /etc/fstab
/dev/zram0 none            swap            pri=10,discard  0 0
/dev/zram1 none            swap            pri=10,discard  0 0
/dev/zram2 none            swap            pri=10,discard  0 0
/dev/zram3 none            swap            pri=10,discard  0 0


09.06.2014 23:44, Kai Krakow wrote:
I didn't mean to persuade you but zram looks a little bit broken to me with
respect to configuration. So if zswap would be an option for you, it might
be the way to go instead of trying to work around quirks that cannot be
fixed easily. Of course, it is only an option if you also use a physical
swap device.

I don't use a physical swap device.

But anyway, the issue is now fully diagnosed, see below. It is indeed zram-specific, and migrating to an alternative solution (such as physical swap) would not hide any bug in systemd.

The systemd commit that introduces the regression to the above setup is:

commit 3ebdb81ef088afd3b4c72b516beb5610f8c93a0d
Author: Kay Sievers <k...@vrfy.org>
Date:   Sun Apr 13 19:54:27 2014 -0700

    udev: serialize/synchronize block device event handling with file locks

As an effect of this commit, systemd-udevd holds an open file descriptor to the block device while processing rules for it. Thus, it writes to the "disksize" sysfs attribute, while also having the fd to /dev/zram0 open. I could not trace by reading kernel sources why this fails to change the disk size, but this failure somehow feels logical. I should just stop setting the "disksize" attribute from an udev rule.

--
Alexander E. Patrakov
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to