If /var or /var/log is a separate filesystem, the udev rule for this can
often run before that filesystem is mounted, causing the
/var/log/uvcdynctrl-udev.log file to be "hidden" under the mountpoint -
where it is also unreachable by logrotate and similar tools, and thus
might grow forever until the root filesystem is full.
One way to remove the unreachable file would be to reboot into single user
mode - but there is an easier way: bind mount the root filesystem to some
other location. Bind mounts ignore submounts, and thus make the files
stuck under mount points accessible.
Here's an example from my system:
# ls -l /var/log/uvcdynctrl-udev.log
-rw-r--r-- 1 root root 0 Nov 6 12:28 /var/log/uvcdynctrl-udev.log
# mount --bind / /mnt
# ls -l /mnt/var/log/uvcdynctrl-udev.log
-rw-r--r-- 1 root root 97805 Nov 4 21:15 /mnt/var/log/uvcdynctrl-udev.log
Apparently /lib/udev/uvcdynctrl and /lib/udev/rules.d/80-uvcdynctrl.rules
are not marked as conffiles, so updates will overwrite any manual edits.
A permanent workaround can be achieved by also overriding the udev rule to
make it read the script from elsewhere, so the modified script won't be
overwritten on updates:
# sed -e '/^debug=/s/1/0/' < /lib/udev/uvcdynctrl >/etc/udev/uvcdynctrl
# sed -e 's|/lib/udev/uvcdynctrl|/etc/udev/uvcdynctrl|' \
< /lib/udev/rules.d/80-uvcdynctrl.rules \
/etc/udev/rules.d/80-uvcdynctrl.rules
A minimal patch would be to add a configuration file to the package, e.g.
/etc/default/uvcdynctrl, and have the /lib/udev/uvcdynctrl read the value
of the "debug" variable from there.
--
Matti.Kurkela (at) iki.fi (or welho.com)