indirdep
struct indirdep *indirdep, *newindirdep;
for (indirdep = NULL, newindirdep = NULL; ; ) {
indirdep = WK_INDIRDEP(wk);
if (indirdep == NULL && newindirdep) {
indirdep = newindirdep;
WORKLIST_INSERT_BP(bp, &indirdep->ir_list);
if (indirdep) {
aip->ai_indirdep = indirdep;
LIST_FOREACH(oldaip, &indirdep->ir_deplisthd, ai_next)
LIST_INSERT_HEAD(&indirdep->ir_deplisthd, aip, ai_next);
((ufs_daddr_t *)indirdep->ir_savebp->b_data)
if (indirdep)
newindirdep = kmalloc(sizeof(struct indirdep), M_INDIRDEP,
struct indirdep *indirdep;
indirdep = WK_INDIRDEP(wk);
if (indirdep->ir_state & GOINGAWAY) {
indirdep->ir_state |= GOINGAWAY;
while ((aip = LIST_FIRST(&indirdep->ir_deplisthd)) != NULL)
bp->b_bio2.bio_offset != indirdep->ir_savebp->b_bio1.bio_offset) {
bcopy(bp->b_data, indirdep->ir_savebp->b_data,
WORKLIST_INSERT_BP(indirdep->ir_savebp, wk);
struct indirdep *indirdep;
(indirdep = WK_INDIRDEP(wk))->ir_savebp != bp ||
(indirdep->ir_state & GOINGAWAY) == 0) {
WORKITEM_FREE(indirdep, D_INDIRDEP);
struct indirdep *indirdep;
indirdep = WK_INDIRDEP(wk);
if (indirdep->ir_state & GOINGAWAY)
if (LIST_FIRST(&indirdep->ir_deplisthd) == NULL) {
indirdep->ir_savebp->b_flags |= B_INVAL | B_NOCACHE;
brelse(indirdep->ir_savebp);
WORKITEM_FREE(indirdep, D_INDIRDEP);
indirdep->ir_saveddata = kmalloc(bp->b_bcount,
indirdep->ir_state &= ~ATTACHED;
indirdep->ir_state |= UNDONE;
bcopy(bp->b_data, indirdep->ir_saveddata, bp->b_bcount);
bcopy(indirdep->ir_savebp->b_data, bp->b_data,
struct indirdep *indirdep;
indirdep = WK_INDIRDEP(wk);
if (indirdep->ir_state & GOINGAWAY) {
bcopy(indirdep->ir_saveddata, bp->b_data, bp->b_bcount);
kfree(indirdep->ir_saveddata, M_INDIRDEP);
indirdep->ir_saveddata = NULL;
indirdep->ir_state &= ~UNDONE;
indirdep->ir_state |= ATTACHED;
while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != NULL) {
if (aip == LIST_FIRST(&indirdep->ir_donehd)) {
struct indirdep *indirdep;
indirdep = aip->ai_indirdep;
if (indirdep->ir_state & UNDONE) {
LIST_INSERT_HEAD(&indirdep->ir_donehd, aip, ai_next);
((ufs_daddr_t *)indirdep->ir_savebp->b_data)[aip->ai_offset] =
struct indirdep *indirdep;
indirdep = WK_INDIRDEP(wk);
LIST_FOREACH(aip, &indirdep->ir_deplisthd, ai_next) {
#define WK_INDIRDEP(wk) ((struct indirdep *)(wk))
struct indirdep *ai_indirdep; /* address of associated indirdep */