24.09.2025 23:46, Demi Marie Obenour wrote:
On 9/24/25 13:46, Mantas Mikulėnas wrote:
On Wed, Sep 24, 2025 at 8:27 PM Demi Marie Obenour <[email protected]>
wrote:
There are cases where a RUN+= script needs to do something
exactly once each time a device appears, such as binding a
different driver to the device. If the udev rule matches
based on a property (such as PCI device information) that
is set only by the kernel, is it okay to use ACTION=="add"
in the rule? The only other options I know of are to either
Such events can still be caused by the admin doing "udevadm trigger
--action=". Not sure why one might do that, but probably better to not rely
on nobody doing that.
In *this* case that should never happen, as Spectrum OS's host
is basically an appliance and ideally nobody would be able to
run commands like that.
systemd-udev-trigger.service does it
Will an ACTION=="add" event always come before any other events?
1. Add additional code to the script to make sure it is
idempotent. This might require adding a lock.
Maybe not necessarily a lock as I *think* udev event processing is
serialized (for a given device at least); a flag file in /run or an xattr
on the /dev node might be enough.
These are PCI devices with no driver. The difficulty with a flag file
is that it needs to be reliably removed.
You may try adding device property and importing it in events (IMPORT{db}).