lh                 47 kernel/log.c     struct logheader lh;
lh                 72 kernel/log.c     for (tail = 0; tail < log.lh.n; tail++) {
lh                 74 kernel/log.c         printk("recovering tail %d dst %d\n", tail, log.lh.block[tail]);
lh                 77 kernel/log.c       struct buf *dbuf = bread(log.dev, log.lh.block[tail]);   // read dst
lh                 92 kernel/log.c     struct logheader *lh = (struct logheader *)(buf->data);
lh                 94 kernel/log.c     log.lh.n = lh->n;
lh                 95 kernel/log.c     for (i = 0; i < log.lh.n; i++) {
lh                 96 kernel/log.c       log.lh.block[i] = lh->block[i];
lh                110 kernel/log.c     hb->n = log.lh.n;
lh                111 kernel/log.c     for (i = 0; i < log.lh.n; i++) {
lh                112 kernel/log.c       hb->block[i] = log.lh.block[i];
lh                123 kernel/log.c     log.lh.n = 0;
lh                138 kernel/log.c       } else if (log.lh.n + (log.outstanding + 1) * MAXOPBLOCKS > LOGBLOCKS) {
lh                192 kernel/log.c     for (tail = 0; tail < log.lh.n; tail++) {
lh                194 kernel/log.c       struct buf *from = bread(log.dev, log.lh.block[tail]); // cache block
lh                205 kernel/log.c     if (log.lh.n > 0) {
lh                209 kernel/log.c       log.lh.n = 0;
lh                229 kernel/log.c     if (log.lh.n >= LOGBLOCKS)
lh                234 kernel/log.c     for (i = 0; i < log.lh.n; i++) {
lh                235 kernel/log.c       if (log.lh.block[i] == b->blockno) // log absorption
lh                238 kernel/log.c     log.lh.block[i] = b->blockno;
lh                239 kernel/log.c     if (i == log.lh.n) { // Add new block to log?
lh                241 kernel/log.c       log.lh.n++;