static long ipbwrite(Chan* ch, Block* bp, ulong offset) { Conv *c; Proto *x; Fs *f; int n; switch(TYPE(ch->qid)){ case Qdata: f = ipfs[ch->dev]; x = f->p[PROTO(ch->qid)]; c = x->conv[CONV(ch->qid)]; if(c->wq == nil) error(Eperm); if(bp->next) bp = concatblock(bp); n = BLEN(bp); qbwrite(c->wq, bp); return n; default: return devbwrite(ch, bp, offset); } }
static long loopbackbwrite(Chan *c, Block *bp, ulong off) { Loop *lb; lb = c->aux; if(TYPE(c->qid.path) == Qdata) return loopoput(lb, &lb->link[ID(c->qid.path) ^ 1], bp); return devbwrite(c, bp, off); }