** Description changed: + SRU: + ==== + + [Impact] + + * In case a ccw (special s390x hardware) device is configured + in a special (non-default) way using chzdev + (like for example increasing the qeth buffer_count to 128), + the modifications are not persistent by default, since the + generated udev rules are not automatically incuded/added to the initramfs. + + * One needs to either manually re-create the initramfs, + e.g. with 'sudo update-initramfs -k all -u' (maybe triggered by zipl) + + * or pass the arguments '-p -r zdev:early' to chzdev. + + * This is not really intuitive and what people expect + and partly leads to confusion. + + * The solution is to compile with the ZDEV_ALWAYS_UPDATE_INITRD=1 option set. + This makes sure that executions of chzdev always trigger 'update-initramfs -u'. + + [Test Plan] + + * Prepare an Ubuntu Server 20.04 or 20.04 on IBM Z with at least + one ccw device, for example a qeth network device, here '0.0.1234'. + (better to do that with a second spare qeth device, + other than the one that is in use by your remote connection). + + * Configure the device using: + sudo chzdev qeth -e 1234 + + * Check the (default) value of a certain attribute, like qeth buffer_count: + cat /sys/devices/qeth/0.0.1234/buffer_count + 64 + + * Disable the ccw device again: + sudo chzdev qeth -d 1234 + + * And enable (re-)enable it with an increased buffer_count: + sudo chzdev -e 1234 buffer_count=128 + + * Check the (increased) value of the qeth buffer_count: + cat /sys/devices/qeth/0.0.1234/buffer_count + 128 + + * Restart the system (without manually running update-initramfs or zipl): + sudo shutdown -r now + + * Once the system is up again, re-check if the ccw device was enabled again + and if it still has the increased buffer_count value: + lszdev qeth 1234 + TYPE ID ON PERS NAMES + qeth 0.0.1234:0.0.1235:0.0.1236 yes yes enc1234 + cat /sys/devices/qeth/0.0.1234/buffer_count + 128 + (alternatively check with: lsqeth enc1234 | grep buffer_count) + + [Where problems could occur] + + * The logic of handling DZDEV_ALWAYS_UPDATE_INITRD could be wrong, e.g. inversed. + Then the initramfs is re-build even if not desired + and in case needed not done, hence similar result than before. + + * The setting of 'ZDEV_ALWAYS_UPDATE_INITRD=1' could have been missed, + which would lead to the similar behaviour than w/o the patch. + + * 'add_pers_removed' could handle wrong device types or not all devices, + in case of potential array index errors. + + * 'is_zdev_early_0' could identify wrong persistent devices as some to be + included early in the boot process (means added to the initramfs). + + * Problems in 'if (all_pers)' could lead to a wrong set of persistent devices + that are considered (or not all), + which could lead to unexpected (de-)configurations. + + * Finally the handling of the confirmation + or the 'build of the command line' could be errornous, + since the encapsulated if condition(s) changed (sightly). + + [Other Info] + + * This patch became upstream accepted with s390-tools 2.16.0 and is + with that already included in hirsute, based on LP:1914574. + + __________ + During the ubuntu installation in tessia, we do chzdev for both dasd and qeth devices, as below. 2020-08-20 09:54:45 | INFO | START subiquity/Early/run/command_1 : chzdev -e dasd 385c 2020-08-20 09:54:45 | INFO | SUCCESS subiquity/Early/run/command_1 : chzdev -e dasd 385c 2020-08-20 09:54:45 | INFO | START subiquity/Early/run/command_2 : chzdev -e qeth 0.0.bdf0 2020-08-20 09:54:47 | INFO | SUCCESS subiquity/Early/run/command_2 : chzdev -e qeth 0.0.bdf0 and we can see the below files in the /etc/udev/rules.d/ oot@m8360024:~# ls -l /etc/udev/rules.d/ total 76 -rw-r--r-- 1 root root 154 Aug 20 09:08 41-cio-ignore.rules -rw-r--r-- 1 root root 430 Aug 20 09:08 41-dasd-eckd-0.0.385c.rules -rw-r--r-- 1 root root 357 Aug 20 09:08 41-generic-ccw-0.0.0009.rules -rw-r--r-- 1 root root 1049 Aug 20 09:08 41-qeth-0.0.bdf0.rules -rw-r--r-- 1 root root 58549 Aug 20 09:10 70-snap.snapd.rules Now, lsinitramfs shows files as below, root@m8360024:~# lsinitramfs /boot/initrd.img-5.4.0-42-generic | grep 41 etc/udev/rules.d/41-cio-ignore-root.rules etc/udev/rules.d/41-dasd-eckd-0.0.385c.rules usr/lib/udev/rules.d/41-cio-ignore.rules usr/lib/udev/rules.d/41-dasd-eckd-0.0.385c.rules usr/lib/udev/rules.d/41-generic-ccw-0.0.0009.rules usr/lib/udev/rules.d/41-qeth-0.0.bdf0.rules Even though lsinitramfs shows the below files, they are overruled by the filesystem files. Next thing we did was to modify the 41-qeth-0.0.bdf0.rules and modified the buffer_count to 128 (As in the attached file). In ideal scenario, the value should we modified as mentioned in the bug. But, in our case, if we are not doing a zipl or update-initramfs -u, the value is not getting modified.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1892367 Title: [UBUNTU 20.04] udev rule change did not get applied To manage notifications about this bug go to: https://bugs.launchpad.net/subiquity/+bug/1892367/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs