[systemd-devel] PATCH: fix LSB Provides handling
fcrozat at suse.com
Mon Mar 25 03:14:05 PDT 2013
Le vendredi 22 mars 2013 à 23:53 +0100, Lennart Poettering a écrit :
> On Thu, 21.03.13 17:04, Frederic Crozat (fcrozat at suse.com) wrote:
> > Hi all,
> > in https://bugzilla.novell.com/show_bug.cgi?id=809646 we noticed LSB
> > Provides can sometime be incorrectly handled (resulting in "Failed to
> > add LSB Provides name XXXX.service, ignoring: File exists" errors),
> > depending on initscript parsing order (if a provides is required by
> > another initscript and this initscript is parsed before the one with the
> > provides).
> Can you explain the problem in more detail? Not following here.
Yes, sorry, I didn't give our test example :
Let's say you have two initscripts, A and B:
A contains in its LSB header:
and B contains in its LSB header:
When systemd is parsing /etc/rc.d/, depending on the file order, you can
end up with:
- B is parsed first. An unit "C.service" will be "created" and will be
added as additional name to B.service, with unit_add_name. No bug.
- A is parsed first. An unit "C.service" is created for the
"Required-Start" dependency (it will have no file attached, since
nothing provides this dependency yet). Then B is parsed and when trying
to handle "Provides: C", unit_add_name is called but will fail, because
"C.service" already exists in manager->units. Therefore, a merge should
occur for that case.
> Also, whitespace/coding style issues.
> Hmm, and also, unit_merge_by_name() looks like the easier way here, as
> it does pretty much what you do here anyway....
Indeed. I overlooked it..
New patch attached.
Frederic Crozat <fcrozat at suse.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 1367 bytes
Desc: not available
More information about the systemd-devel