lh                 46 log.c            struct logheader lh;
lh                 74 log.c            for (tail = 0; tail < log.lh.n; tail++) {
lh                 76 log.c              struct buf *dbuf = bread(log.dev, log.lh.block[tail]); // read dst
lh                 89 log.c            struct logheader *lh = (struct logheader *) (buf->data);
lh                 91 log.c            log.lh.n = lh->n;
lh                 92 log.c            for (i = 0; i < log.lh.n; i++) {
lh                 93 log.c              log.lh.block[i] = lh->block[i];
lh                107 log.c            hb->n = log.lh.n;
lh                108 log.c            for (i = 0; i < log.lh.n; i++) {
lh                109 log.c              hb->block[i] = log.lh.block[i];
lh                120 log.c            log.lh.n = 0;
lh                132 log.c              } else if(log.lh.n + (log.outstanding+1)*MAXOPBLOCKS > LOGSIZE){
lh                182 log.c            for (tail = 0; tail < log.lh.n; tail++) {
lh                184 log.c              struct buf *from = bread(log.dev, log.lh.block[tail]); // cache block
lh                195 log.c            if (log.lh.n > 0) {
lh                199 log.c              log.lh.n = 0;
lh                218 log.c            if (log.lh.n >= LOGSIZE || log.lh.n >= log.size - 1)
lh                224 log.c            for (i = 0; i < log.lh.n; i++) {
lh                225 log.c              if (log.lh.block[i] == b->blockno)   // log absorbtion
lh                228 log.c            log.lh.block[i] = b->blockno;
lh                229 log.c            if (i == log.lh.n)
lh                230 log.c              log.lh.n++;