manager: reduce complexity of unit_gc_sweep (#3507)
authorLukáš Nykrýn <lnykryn@redhat.com>
Tue, 14 Jun 2016 12:20:56 +0000 (14:20 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 14 Jun 2016 12:20:56 +0000 (14:20 +0200)
commit4892084f096c19da0e83f28f250ca187b58c22b2
treed719664eb002fb77c29ed4d3944d0b3ebc4a9e32
parentbbc85a16e12083fdf13215c07a57ad7a5fb56ef8
manager: reduce complexity of unit_gc_sweep (#3507)

When unit is marked as UNSURE, we are trying to find if it state was
changed over and over again. So lets not go through the UNSURE states
again. Also when we find a GOOD unit lets propagate the GOOD state to
all units that this unit reference.

This is a problem on machines with a lot of initscripts with different
starting priority, since those units will reference each other and the
original algorithm might get to n! complexity.

Thanks HATAYAMA Daisuke for the expand_good_state code.
src/core/manager.c