Lines Matching refs:j
56 struct cfjail *j, *dj; in dep_setup() local
70 if ((j = TAILQ_FIRST(&cfjails)) && in dep_setup()
71 (p = j->intparams[IP_DEPEND])) { in dep_setup()
76 j->flags |= JF_FAILED; in dep_setup()
84 TAILQ_FOREACH(j, &cfjails, tq) in dep_setup()
88 TAILQ_FOREACH(j, &cfjails, tq) in dep_setup()
89 jails_byname[njails++] = j; in dep_setup()
95 TAILQ_FOREACH(j, &cfjails, tq) { in dep_setup()
96 if (j->flags & JF_FAILED) in dep_setup()
98 if ((p = j->intparams[IP_DEPEND])) { in dep_setup()
103 dep_add(j, dj, 0); in dep_setup()
105 jail_warnx(j, in dep_setup()
108 j->flags |= JF_FAILED; in dep_setup()
113 if ((cs = strrchr(j->name, '.'))) in dep_setup()
115 if (plen < (size_t)(cs - j->name + 1)) { in dep_setup()
116 plen = (cs - j->name) + 1; in dep_setup()
119 strlcpy(pname, j->name, plen); in dep_setup()
123 dep_add(j, dj, DF_LIGHT); in dep_setup()
131 while ((j = TAILQ_FIRST(&ready))) { in dep_setup()
132 requeue(j, &cfjails); in dep_setup()
133 dep_done(j, DF_NOFAIL); in dep_setup()
135 while ((j = TAILQ_FIRST(&depend)) != NULL) { in dep_setup()
136 jail_warnx(j, "dependency loop"); in dep_setup()
137 j->flags |= JF_FAILED; in dep_setup()
139 requeue(j, &cfjails); in dep_setup()
140 dep_done(j, DF_NOFAIL); in dep_setup()
141 } while ((j = TAILQ_FIRST(&ready))); in dep_setup()
143 TAILQ_FOREACH(j, &cfjails, tq) in dep_setup()
144 STAILQ_FOREACH(d, &j->dep[DEP_FROM], tq[DEP_FROM]) in dep_setup()
155 dep_check(struct cfjail *j) in dep_check() argument
163 if (j->ndeps == 0) in dep_check()
166 if ((rev = JF_DO_STOP(j->flags))) { in dep_check()
173 STAILQ_FOREACH(d, &j->dep[depfrom], tq[depfrom]) { in dep_check()
176 dj = d->j[depto]; in dep_check()
178 if (!(j->flags & (JF_DEPEND | JF_FAILED)) && in dep_check()
180 jail_warnx(j, "skipped"); in dep_check()
181 j->flags |= JF_FAILED; in dep_check()
196 switch (j->flags & JF_OP_MASK) { in dep_check()
224 requeue(j, &depend); in dep_check()
232 dep_done(struct cfjail *j, unsigned flags) in dep_done() argument
238 if (JF_DO_STOP(j->flags)) { in dep_done()
245 STAILQ_FOREACH(d, &j->dep[depto], tq[depto]) { in dep_done()
249 dj = d->j[depfrom]; in dep_done()
250 if (!(flags & DF_NOFAIL) && (j->flags & JF_FAILED) && in dep_done()
251 (j->flags & (JF_OP_MASK | JF_DEPEND)) != in dep_done()
267 dep_reset(struct cfjail *j) in dep_reset() argument
272 depfrom = JF_DO_STOP(j->flags) ? DEP_TO : DEP_FROM; in dep_reset()
273 j->ndeps = 0; in dep_reset()
274 STAILQ_FOREACH(d, &j->dep[depfrom], tq[depfrom]) in dep_reset()
275 j->ndeps++; in dep_reset()
284 struct cfjail *j; in next_jail() local
286 if (!(j = next_proc(!TAILQ_EMPTY(&ready))) && in next_jail()
287 (j = TAILQ_FIRST(&ready)) && JF_DO_STOP(j->flags) && in next_jail()
288 (j = TAILQ_LAST(&ready, cfjails)) && !JF_DO_STOP(j->flags)) { in next_jail()
289 TAILQ_FOREACH_REVERSE(j, &ready, cfjails, tq) in next_jail()
290 if (JF_DO_STOP(j->flags)) in next_jail()
293 if (j != NULL) in next_jail()
294 requeue(j, &cfjails); in next_jail()
295 return j; in next_jail()
305 struct cfjail *j, *tj; in start_state() local
316 TAILQ_FOREACH_SAFE(j, &cfjails, tq, tj) { in start_state()
317 j->flags = (j->flags & JF_FAILED) | state | in start_state()
319 dep_reset(j); in start_state()
320 requeue(j, j->ndeps ? &depend : &ready); in start_state()
347 j = add_jail(); in start_state()
348 j->name = estrdup(namebuf); in start_state()
349 j->jid = jid; in start_state()
350 j->flags = (j->flags & JF_FAILED) | in start_state()
352 dep_reset(j); in start_state()
353 requeue(j, &ready); in start_state()
357 TAILQ_FOREACH_SAFE(j, &cfjails, tq, tj) { in start_state()
358 if (wild_jail_match(j->name, target)) { in start_state()
359 j->flags = (j->flags & JF_FAILED) | in start_state()
361 dep_reset(j); in start_state()
362 requeue(j, &ready); in start_state()
367 j = find_jail(target); in start_state()
368 if (j == NULL && (state & JF_OP_MASK) == JF_STOP) { in start_state()
370 j = running_jail(target, JAIL_DYING); in start_state()
372 if (j == NULL) { in start_state()
376 j->flags = (j->flags & JF_FAILED) | state; in start_state()
377 dep_reset(j); in start_state()
378 requeue(j, &ready); in start_state()
387 requeue(struct cfjail *j, struct cfjails *queue) in requeue() argument
389 if (j->queue != queue) { in requeue()
390 TAILQ_REMOVE(j->queue, j, tq); in requeue()
391 TAILQ_INSERT_TAIL(queue, j, tq); in requeue()
392 j->queue = queue; in requeue()
397 requeue_head(struct cfjail *j, struct cfjails *queue) in requeue_head() argument
399 TAILQ_REMOVE(j->queue, j, tq); in requeue_head()
400 TAILQ_INSERT_HEAD(queue, j, tq); in requeue_head()
401 j->queue = queue; in requeue_head()
414 d->j[DEP_FROM] = from; in dep_add()
415 d->j[DEP_TO] = to; in dep_add()