kernel_optimize_test/fs/nilfs2
Ryusuke Konishi 25294d8c37 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>
2010-05-10 11:32:32 +09:00
..
alloc.c nilfs2: add kernel doc comments to persistent object allocator functions 2010-05-10 11:32:31 +09:00
alloc.h nilfs2: add kernel doc comments to persistent object allocator functions 2010-05-10 11:32:31 +09:00
bmap_union.h nilfs2: integrated block mapping 2009-04-07 08:31:13 -07:00
bmap.c nilfs2: trivial coding style fix 2009-12-25 13:01:50 +09:00
bmap.h nilfs2: convert nilfs_bmap_lookup to an inline function 2009-09-14 18:27:16 +09:00
btnode.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
btnode.h nilfs2: eliminate nilfs_btnode_get function 2009-11-20 10:05:50 +09:00
btree.c nilfs2: cleanup multi kmem_cache_{create,destroy} code 2010-05-10 11:32:30 +09:00
btree.h nilfs2: cleanup multi kmem_cache_{create,destroy} code 2010-05-10 11:32:30 +09:00
cpfile.c nilfs2: trivial coding style fix 2009-12-25 13:01:50 +09:00
cpfile.h nilfs2: separate read method of meta data files on super root block 2009-11-20 10:05:48 +09:00
dat.c nilfs2: fix various typos in comments 2010-03-14 10:29:51 +09:00
dat.h nilfs2: separate read method of meta data files on super root block 2009-11-20 10:05:48 +09:00
dir.c nilfs2: fix typo "cout" -> "count" in error message 2010-03-14 10:29:50 +09:00
direct.c nilfs2: trivial coding style fix 2009-12-25 13:01:50 +09:00
direct.h nilfs2: remove nilfs_direct_operations from direct mapping 2009-06-10 23:41:11 +09:00
file.c const: constify remaining file_operations 2009-10-01 16:11:11 -07:00
gcdat.c nilfs2: flush palloc cache before manipulating data pages of GC dat 2009-11-20 10:05:50 +09:00
gcinode.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ifile.c nilfs2: add palloc cache to ifile 2009-11-20 10:05:50 +09:00
ifile.h nilfs2: separate constructor of metadata files 2009-11-20 10:05:48 +09:00
inode.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ioctl.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 2010-04-12 18:34:25 -07:00
Kconfig Revert "task_struct: make journal_info conditional" 2009-12-17 13:23:24 -08:00
Makefile nilfs2: update makefile and Kconfig 2009-04-07 08:31:16 -07:00
mdt.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mdt.h nilfs2: add cache framework for persistent object allocator 2009-11-20 10:05:50 +09:00
namei.c nilfs really shouldn't slap struct dentry on stack... 2010-03-03 14:07:58 -05:00
nilfs.h nilfs really shouldn't slap struct dentry on stack... 2010-03-03 14:07:58 -05:00
page.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
page.h nilfs2: buffer and page operations 2009-04-07 08:31:13 -07:00
recovery.c nilfs2: insert checkpoint number in segment summary header 2010-05-10 11:32:31 +09:00
sb.h nilfs2: simplify remaining sget() use 2009-06-11 21:36:18 -04:00
segbuf.c nilfs2: insert checkpoint number in segment summary header 2010-05-10 11:32:31 +09:00
segbuf.h nilfs2: insert checkpoint number in segment summary header 2010-05-10 11:32:31 +09:00
segment.c nilfs2: make nilfs_sc_*_ops static 2010-05-10 11:32:31 +09:00
segment.h nilfs2: change sc_timer from a pointer to an embedded one in struct nilfs_sc_info 2010-05-10 11:32:31 +09:00
sufile.c nilfs2: fix various typos in comments 2010-03-14 10:29:51 +09:00
sufile.h nilfs2: clean up get/put function of a segment usage 2009-11-20 10:05:51 +09:00
super.c nilfs2: add missing endian conversion on super block magic number 2010-05-10 11:32:32 +09:00
the_nilfs.c nilfs2: use checkpoint number instead of timestamp to select super block 2010-05-10 11:32:32 +09:00
the_nilfs.h include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00