Logging

ext3 structures:

what's in the ext3 log?

sys call:

is log correct if concurrent syscalls?

what if a crash?

how does recovery work?

  1. find the start and end of the log
  2. Replay all blocks through last complete xaction, in log order

what if block after last valid log block looks like a log descriptor?

when can ext3 free a transaction's log space?

what if not enough free space in log for a syscall?

ext3 not as immediately durable as xv6

what if syscall B reads uncommited result of syscall A?

  A: echo hi > x &
  B: ls > y &
could B commit before A, so that crash would reveal anomaly?

T2 starts while T1 is committing to log on disk

performance?
create 100 small files in a directory