From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atuin.qyliss.net (localhost [IPv6:::1]) by atuin.qyliss.net (Postfix) with ESMTP id 03519146FD; Wed, 24 Sep 2025 20:23:40 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id 686EE13CEB; Wed, 24 Sep 2025 17:47:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on atuin.qyliss.net X-Spam-Level: X-Spam-Status: No, score=-0.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DMARC_PASS,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by atuin.qyliss.net (Postfix) with ESMTPS id B304F13CE9 for ; Wed, 24 Sep 2025 17:47:02 +0000 (UTC) Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-b3164978f11so19440466b.3 for ; Wed, 24 Sep 2025 10:47:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758736017; x=1759340817; darn=spectrum-os.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/SITd0qDOh9T+vd6lHE0rMwCx5fM3Z3aXxopOrxZ4SE=; b=mCjZqtNpyqEIgM0+bJzV+6aP/AI1xbkjVr+I/fh0+8zQO9nZjZkd7rVNmfAUjeHWte dh0uQU1xtSTLCvPaAi6K2DksdiCvvSsei8WkpSfg0kjzmQCnwZrpZpGgptPJ0Hk3NuNf RJmlueff3B9OselMDqBjEfNOvOw1wvKSzXzzd0E7XhbrtGgIDysw6jqnMhkALG0cPLhs TmMqMLyZfPh84T3mdo+0U4dd6kaS6LV2w4VCCxv1ncAglHF/jQzxMkcrypNzC0zg1lVF AL8KpIHNzrf4KV0YxeN0X/YFuEooQmLbbO9yJuQvPPUy/MS+FkVgU7Kfie4kIi9fNzBa zUBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758736017; x=1759340817; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/SITd0qDOh9T+vd6lHE0rMwCx5fM3Z3aXxopOrxZ4SE=; b=Rt8m5+Q92nbXUbqQ5noOorKzNUuBJNvBb71xtVKh7lY2iS4Yf2UQO9PIQBsymvj5Le 7dtNvQPizRQzY9HNgOgwbST1+VY6M+36d7ar9ILduC/moAvmo3LTQuJJ9bj90bksKKzi ucoKzCP26E8Lqr848K/xe5JDE/AKpv8UPEwLswgkRPoepkTdqbH3AmQLwDGoJLyF8seB JeSEgUvtySEBWaLo0Qt+JUQcgKZ/QuM+vDetLrdxgleD+Lcq3/cbRqIe9JwOjB/tQhc/ 99uM5rw1pnZaTmsPnXn1UMFGnZPTMXtaNY9jIRoxJhjVYN52ES/7ZM8H8qSn1DxWhsS0 cUEA== X-Forwarded-Encrypted: i=1; AJvYcCUlGQM8LXzRQgXrwFOp9B3H6rEW5eU/KB0gKlWZb9gPX07GKcmzR0K15MUjtWFhwRsTytZYWg==@spectrum-os.org X-Gm-Message-State: AOJu0YxIk5ofQMcTZsOMLpaka5JtDxt5d3x8kB1oeXCETDnGHhE4uLq+ k1uTYUKjOsIbS7X5+SDhOOiGDeXbCuU8Jpj+th7MSRDOD2PPk3LWLQINOgG1FQVOsRZly9PQpEi HU87buZBAbXtO+d1A7VX07FtUi1CXsF8= X-Gm-Gg: ASbGncvyzryWEKojJzRQ5dZ2umE4ZacXb1uCF+1B7Nk27lhrzw8nJR2zQ0EwRG9c/Pq RRsFYILCVK3zTZ5fMIqWF5Cz7vp97+W7zAp2/xPyB7fG/jUVuyAsdLc28Klhxk+xovKmfHCDEQC yJmTiMqe2JHGbRBr/KOTcAmPNY4dNBvDLFB2LFDXG1HeMYxA5EKEt81o2bhKDisje9Q7AhVug5t LMVDg== X-Google-Smtp-Source: AGHT+IESQ1bCKpObHxiTDv0eiNnaBWiyQUThLHFB8Hx+cU3LSwNQymuNNK6meiSup1aWd/ILUyzLCNNgIVvKTvhGDag= X-Received: by 2002:a17:907:7282:b0:b2f:75f7:67e7 with SMTP id a640c23a62f3a-b34ba639a4fmr62126466b.31.1758736016729; Wed, 24 Sep 2025 10:46:56 -0700 (PDT) MIME-Version: 1.0 References: <65bf66b4-142e-40ae-b7af-885669da53c7@gmail.com> In-Reply-To: <65bf66b4-142e-40ae-b7af-885669da53c7@gmail.com> From: =?UTF-8?Q?Mantas_Mikul=C4=97nas?= Date: Wed, 24 Sep 2025 20:46:45 +0300 X-Gm-Features: AS18NWCTtuWBy8EqUvrSCqfAcu_0PmlnQ6g8AVsz_sHGVizaG9UKD64ilYPewhg Message-ID: Subject: Re: [systemd-devel] Non-idempotent RUN+= scripts To: Demi Marie Obenour Content-Type: multipart/alternative; boundary="00000000000087eff4063f8fa346" X-MailFrom: grawity@gmail.com X-Mailman-Rule-Hits: header-match-devel.spectrum-os.org-2 X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-devel.spectrum-os.org-0; header-match-devel.spectrum-os.org-1 Message-ID-Hash: WFZAXZBOTPZAQSL63RCLRVYO6QBGWUEN X-Message-ID-Hash: WFZAXZBOTPZAQSL63RCLRVYO6QBGWUEN X-Mailman-Approved-At: Wed, 24 Sep 2025 20:23:38 +0000 CC: systemd development , Spectrum OS Development X-Mailman-Version: 3.3.9 Precedence: list List-Id: Patches and low-level development discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --00000000000087eff4063f8fa346 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Sep 24, 2025 at 8:27=E2=80=AFPM Demi Marie Obenour wrote: > There are cases where a RUN+=3D 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=3D=3D"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=3D". Not sure why one might do that, but probably better to not re= ly on nobody doing that. > > 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. > > 2. Use a persistent daemon. > It might be possible to have a persistent Type=3Doneshot .service via ENV{SYSTEMD_WANTS}, with RefuseManualStop. Not sure if that's a good idea. --00000000000087eff4063f8fa346 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Wed, Sep 24, 2025 at 8:27=E2=80=AFPM Demi = Marie Obenour <demiobenour@gmai= l.com> wrote:
There are cases where a RUN+=3D script needs to do something
exactly once each time a device appears, such as binding a
different driver to the device.=C2=A0 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=3D=3D"add" in the rule?=C2=A0 The only other options I know of are to either

Such events can still be caused by the admin doi= ng "udevadm trigger --action=3D". Not sure why one might do that,= but probably better to not rely on nobody doing that.
=C2=A0

1. Add additional code to the script to make sure it is
=C2=A0 =C2=A0idempotent.=C2=A0 This might require adding a lock.

Maybe not necessarily a lock as I *think* udev ev= ent processing is serialized (for a given device at least); a flag file in = /run or an xattr on the /dev node might be enough.
=C2=A0

2. Use a persistent daemon.

It might be= possible to have a persistent Type=3Doneshot .service via ENV{SYSTEMD_WANT= S}, with RefuseManualStop. Not sure if that's a good idea.

--00000000000087eff4063f8fa346--