unit: coldplug both job and nop_job if possible
Sometimes, both job and nop_job are deserialized. In this case, if we only cold plug the job, the nop_job will also stuck in the job list.
This commit is contained in:
+7
-4
@@ -3588,7 +3588,6 @@ int unit_add_blockdev_dependency(Unit *u, const char *what, UnitDependencyMask m
|
|||||||
int unit_coldplug(Unit *u) {
|
int unit_coldplug(Unit *u) {
|
||||||
int r = 0, q;
|
int r = 0, q;
|
||||||
char **i;
|
char **i;
|
||||||
Job *uj;
|
|
||||||
|
|
||||||
assert(u);
|
assert(u);
|
||||||
|
|
||||||
@@ -3611,9 +3610,13 @@ int unit_coldplug(Unit *u) {
|
|||||||
r = q;
|
r = q;
|
||||||
}
|
}
|
||||||
|
|
||||||
uj = u->job ?: u->nop_job;
|
if (u->job) {
|
||||||
if (uj) {
|
q = job_coldplug(u->job);
|
||||||
q = job_coldplug(uj);
|
if (q < 0 && r >= 0)
|
||||||
|
r = q;
|
||||||
|
}
|
||||||
|
if (u->nop_job) {
|
||||||
|
q = job_coldplug(u->nop_job);
|
||||||
if (q < 0 && r >= 0)
|
if (q < 0 && r >= 0)
|
||||||
r = q;
|
r = q;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user