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 / ExecStartPostThis 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"
"unit is started" is for me pretty clear the whole systemd-unitAs 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
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 timeWhy do you think that it would disappear between starting two processes belonging to the same unit?
why do the developers think that?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 fixedbut 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 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: OpenPGP digital signature
_______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel