log 47 log.c struct log log;
log 59 log.c initlock(&log.lock, "log");
log 61 log.c log.start = sb.logstart;
log 62 log.c log.size = sb.nlog;
log 63 log.c log.dev = dev;
log 73 log.c for (tail = 0; tail < log.lh.n; tail++) {
log 74 log.c struct buf *lbuf = bread(log.dev, log.start+tail+1); // read log block
log 75 log.c struct buf *dbuf = bread(log.dev, log.lh.block[tail]); // read dst
log 87 log.c struct buf *buf = bread(log.dev, log.start);
log 90 log.c log.lh.n = lh->n;
log 91 log.c for (i = 0; i < log.lh.n; i++) {
log 92 log.c log.lh.block[i] = lh->block[i];
log 103 log.c struct buf *buf = bread(log.dev, log.start);
log 106 log.c hb->n = log.lh.n;
log 107 log.c for (i = 0; i < log.lh.n; i++) {
log 108 log.c hb->block[i] = log.lh.block[i];
log 119 log.c log.lh.n = 0;
log 127 log.c acquire(&log.lock);
log 129 log.c if(log.committing){
log 130 log.c sleep(&log, &log.lock);
log 131 log.c } else if(log.lh.n + (log.outstanding+1)*MAXOPBLOCKS > LOGSIZE){
log 133 log.c sleep(&log, &log.lock);
log 135 log.c log.outstanding += 1;
log 136 log.c release(&log.lock);
log 149 log.c acquire(&log.lock);
log 150 log.c log.outstanding -= 1;
log 151 log.c if(log.committing)
log 153 log.c if(log.outstanding == 0){
log 155 log.c log.committing = 1;
log 158 log.c wakeup(&log);
log 160 log.c release(&log.lock);
log 166 log.c acquire(&log.lock);
log 167 log.c log.committing = 0;
log 168 log.c wakeup(&log);
log 169 log.c release(&log.lock);
log 179 log.c for (tail = 0; tail < log.lh.n; tail++) {
log 180 log.c struct buf *to = bread(log.dev, log.start+tail+1); // log block
log 181 log.c struct buf *from = bread(log.dev, log.lh.block[tail]); // cache block
log 192 log.c if (log.lh.n > 0) {
log 196 log.c log.lh.n = 0;
log 215 log.c if (log.lh.n >= LOGSIZE || log.lh.n >= log.size - 1)
log 217 log.c if (log.outstanding < 1)
log 220 log.c acquire(&log.lock);
log 221 log.c for (i = 0; i < log.lh.n; i++) {
log 222 log.c if (log.lh.block[i] == b->blockno) // log absorbtion
log 225 log.c log.lh.block[i] = b->blockno;
log 226 log.c if (i == log.lh.n)
log 227 log.c log.lh.n++;
log 229 log.c release(&log.lock);