]> git.baikalelectronics.ru Git - kernel.git/commit
nilfs2: use checkpoint number instead of timestamp to select super block
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Sat, 1 May 2010 02:54:21 +0000 (11:54 +0900)
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Mon, 10 May 2010 02:32:32 +0000 (11:32 +0900)
commit72f3f1255c22a7d2efc1f3fed8c50b9a49100337
tree0241728923929381293a738222967952531d5625
parent4465562a8b678a3bf3e697664bd0debf56d66b3d
nilfs2: use checkpoint number instead of timestamp to select super block

Nilfs maintains two super blocks, and selects the new one on mount
time if they both have valid checksums and their timestamps differ.

However, this has potential for mis-selection since the system clock
may be rewinded and the resolution of the timestamps is not high.

Usually this doesn't become an issue because both super blocks are
updated at the same time when the file system is unmounted.  Even if
the file system wasn't unmounted cleanly, the roll-forward recovery
will find the proper log which stores the latest super root.  Thus,
the issue can appear only if update of one super block fails and the
clock happens to be rewinded.

This fixes the issue by using checkpoint numbers instead of timestamps
to pick the super block storing the location of the latest log.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
fs/nilfs2/the_nilfs.c