On 2015-08-10 at 15:46 +0200, Reindl Harald wrote: > > Am 10.08.2015 um 15:28 schrieb Ivan Shapovalov: > > On 2015-08-10 at 15:14 +0200, Reindl Harald wrote: > > > > > > Am 10.08.2015 um 15:05 schrieb Ivan Shapovalov: > > > > On 2015-08-10 at 11:16 +0200, Reindl Harald wrote: > > > > Moreover, > > > > > > > > > > > > > > * "RuntimeDirectory" is a service configuration > > > > > * the daemon is started as unprivileged user > > > > > * "RuntimeDirectory" should be created long before > > > > > ExecStart / ExecStartPost > > > > > > > > This is wrong. The runtime directory "will be created <...> > > > > when > > > > the unit is started, and removed when the unit is stopped". > > > > > > what is wrong? > > > > The runtime directory should be created right before the unit is > > started, not "long before ExecStart / ExecStartPost". > > so why trying to create it before "ExecStart" *and* "ExecStartPost"
Because there may be no ExecStart= but ExecStartPost=. > > > "unit is started" is for me pretty clear the whole systemd-unit > > > > > > > As can be seen from the code, the runtime directory creation is > > > > attempted on execution of each configured process, be it > > > > ExecStart= > > > > or > > > > ExecStartPost= (or whatever else) > > > > > > and why in the world is the code written that way? > > > > This is pointless rhetoric. > > no it is not pointless rhetoric > it's a serious question See above. Doing explicit checks against existence of certain entries or implementing an ad-hoc FSM is way more fragile than just writing idempotent code. > > > > there is no logical reason that "RuntimeDirectory" created once > > > would > > > disappear while starting the other processes as well as > > > tempfiles.d > > > which get replaced by "RuntimeDirectory" isn't fired all the time > > > > Why do you think that it would disappear between starting two > > processes > > belonging to the same unit? > > why do the developers think that? See above. > if they don't think so why attempt creation for *each configured > process* of the same systemd-unit? > > > The runtime directory is destroyed when a > > unit enters inactive state. systemd always attempts to create it > > when > > it forks off a control process, just (I guess) because it's more > > robust > > to do it that way rather than to implement a separate state machine > > just for that purpose. Now, there was a TOCTOU-style race > > condition, > > and it got fixed indeed as far as I can see > > yes, the race condition seems now to be fixed > > but it would have been impossible to happen if *really* "The runtime > directory should be created right before the unit is started" would > be > the implementation because there would be no second (needless) attemt > to create it See above. -- Ivan Shapovalov / intelfx / > but a single point of early code which creates it with the > correct permissions and any following ExecStart* could rely that it > exists
signature.asc
Description: This is a digitally signed message part
_______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel