lh                 45 log.c            struct logheader lh;
lh                 73 log.c            for (tail = 0; tail < log.lh.n; tail++) {
lh                 75 log.c              struct buf *dbuf = bread(log.dev, log.lh.block[tail]); // read dst
lh                 88 log.c            struct logheader *lh = (struct logheader *) (buf->data);
lh                 90 log.c            log.lh.n = lh->n;
lh                 91 log.c            for (i = 0; i < log.lh.n; i++) {
lh                 92 log.c              log.lh.block[i] = lh->block[i];
lh                106 log.c            hb->n = log.lh.n;
lh                107 log.c            for (i = 0; i < log.lh.n; i++) {
lh                108 log.c              hb->block[i] = log.lh.block[i];
lh                119 log.c            log.lh.n = 0;
lh                131 log.c              } else if(log.lh.n + (log.outstanding+1)*MAXOPBLOCKS > LOGSIZE){
lh                179 log.c            for (tail = 0; tail < log.lh.n; tail++) {
lh                181 log.c              struct buf *from = bread(log.dev, log.lh.block[tail]); // cache block
lh                192 log.c            if (log.lh.n > 0) {
lh                196 log.c              log.lh.n = 0; 
lh                215 log.c            if (log.lh.n >= LOGSIZE || log.lh.n >= log.size - 1)
lh                221 log.c            for (i = 0; i < log.lh.n; i++) {
lh                222 log.c              if (log.lh.block[i] == b->blockno)   // log absorbtion
lh                225 log.c            log.lh.block[i] = b->blockno;
lh                226 log.c            if (i == log.lh.n)
lh                227 log.c              log.lh.n++;