Alexander E. Patrakov <patra...@gmail.com> schrieb: > 09.06.2014 19:26, Kai Krakow wrote: >> Alexander E. Patrakov <patra...@gmail.com> schrieb: >> >>> 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? >> >> I switched to zswap because of this. This also looks more appropriate for >> my workload. Maybe that's an option? At least if you do have a physical >> swap device (and in that cased I'd prefer zswap over zram). > > Please don't persuade me to hide or tolerate bugs. Even if zswap is more > appropriate, I would like to get a comment on my zram issue from systemd > maintainers.
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 had most success with putting zram statically into the kernel and put the "num_devices" parameter into the kernel cmdline. But still you need to "mkswap" these unprepared devices first - and that's not that easy with systemd. I gave up on that part because it never worked out as expected and instead went with zswap. However, that is a few months ago now and there might be options to make it work now. But even before systemd (with openrc), I had to mkswap first, then swapon. I wasn't able to handle this automatically and reliably just through fstab. The whole process of configuring the device first, then formatting the device, and only then use it, makes it almost impossible to use it the way systemd does things (execute on discovery). The best way to go with systemd is probably by creating a service template that does the above steps (configure, prepare, use) and depends on disovery of the devices. Then enable as many service instances as you need and do not put them into fstab. Something like: # /etc/systemd/system/zram-swap@.service ... [Service] EnvironmentFile=/etc/conf.d/zram ExecStartPre=echo -n $((1024*1024*$SIZE)) >/sys/block/%I/disksize ExecStartPre=/sbin/mkswap /dev/%I ExecStart=swapon /dev/%I ExecStop=swapoff /dev/%I $ systemctl enable zram-swap@zram{0,1,2,3}.service I'm leaving out the [Unit] block and the dependencies to be used because I have no way to test such a setup here. So it is left as an excercise. ;-) But I think that's the only way to go. You cannot use it in fstab because the device is just not ready at the time when systemd parses through fstab. -- Replies to list only preferred. _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel