[systemd-devel] [PATCH] service: do not apply SysV ordering to native services

Andrey Borzenkov arvidjaar at gmail.com
Thu Mar 24 11:37:12 PDT 2011


On Thu, Mar 24, 2011 at 8:38 PM, Michal Schmidt <mschmidt at redhat.com> wrote:
> On Thu, 24 Mar 2011 20:15:10 +0300 Andrey Borzenkov wrote:
>> On Thu, Mar 24, 2011 at 7:51 PM, Michal Schmidt <mschmidt at redhat.com>
>> wrote:
>> > In Fedora udev-retry.service exists both as a native unit and as a
>> > legacy SysV service. The ordering inferred from the rc.d symlink
>> > farm is being incorrectly applied to the native unit:
>> >
>>
>> Then something is fishy. Native unit hides SysV script completely ...
>> or at least is supposed to.
>> >  #ifdef HAVE_SYSV_COMPAT
>> >         /* Load a classic init script as a fallback, if we couldn't
>> > find anything */
>>
>> So it implies native unit was not found for whatever reasons. This
>> looks like a real bug that has to be fixed.
>
> The native unit is found. The else branch is taken in this case. The
> comment refers to the first branch.
>

Yes, you are right. But blindly resetting SysV priority is still wrong
- native unit may have defined it as well.

This ordering is applied only for service without LSB headers; you
have really many of them.

It is still not clear whether this is a bug. We assume that SysV
script and service unit with the same provide the same service. So
what logically follows, if SysV script claims it needs to be started
after this service and does not help with stating functional
requirements (LSB headers), systemd have to ensure script gets what it
asked for ...

What probably is needed - systemd has to honour "SysV scripts ordered
after my sysv_start_priority", but ignore "my sysv_start_priority
ordered after SysV script". Currently it does not even check whether
service is native ... so I guess real fix has to go into
sysv_fix_order().
>> Could you paste systemctl dump somewhere? Without your patch ...
>
> http://fpaste.org/1iid/
>
> Michal
>


More information about the systemd-devel mailing list