remarkable-linux/fs/nilfs2
Ryusuke Konishi ebdfed4dc5 nilfs2: add routines to roll back state of DAT file
This adds optional function to metadata files which makes a copy of
bmap, page caches, and b-tree node cache, and rolls back to the copy
as needed.

This enhancement is intended to displace gcdat inode that provides a
similar function in a different way.

In this patch, nilfs_shadow_map structure is added to store a copy of
the foregoing states.  nilfs_mdt_setup_shadow_map relates this
structure to a metadata file.  And, nilfs_mdt_save_to_shadow_map() and
nilfs_mdt_restore_from_shadow_map() provides save and restore
functions respectively.  Finally, nilfs_mdt_clear_shadow_map() clears
states of nilfs_shadow_map.

The copy of b-tree node cache and page cache is made by duplicating
only dirty pages into corresponding caches in nilfs_shadow_map.  Their
restoration is done by clearing dirty pages from original caches and
by copying dirty pages back from nilfs_shadow_map.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
2010-10-23 09:24:37 +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.c nilfs2: add routines to save and restore bmap state 2010-10-23 09:24:37 +09:00
bmap.h nilfs2: add routines to save and restore bmap state 2010-10-23 09:24:37 +09:00
btnode.c nilfs2: add routines to roll back state of DAT file 2010-10-23 09:24:37 +09:00
btnode.h nilfs2: add read ahead mode to nilfs_btnode_submit_block 2010-07-23 10:02:15 +09:00
btree.c nilfs2: apply read-ahead for nilfs_btree_lookup_contig 2010-07-23 10:02:16 +09:00
btree.h nilfs2: get rid of nilfs_bmap_union 2010-07-23 10:02:14 +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 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2010-08-10 11:26:52 -07:00
direct.c nilfs2: remove redundant pointer checks in bmap lookup functions 2010-07-23 10:02:14 +09:00
direct.h nilfs2: get rid of nilfs_bmap_union 2010-07-23 10:02:14 +09:00
export.h nilfs2: make snapshots in checkpoint tree exportable 2010-10-23 09:24:34 +09:00
file.c drop unused dentry argument to ->fsync 2010-05-27 22:05:02 -04:00
gcdat.c simplify checks for I_CLEAR/I_FREEING 2010-08-09 16:47:44 -04:00
gcinode.c nilfs2: do not allocate nilfs_mdt_info structure to gc-inodes 2010-10-23 09:24:37 +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 nilfs2: allow nilfs_clear_inode to clear metadata file inodes 2010-10-23 09:24:37 +09:00
ioctl.c nilfs2: simplify life cycle management of nilfs object 2010-10-23 09:24:36 +09: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 nilfs2: add routines to roll back state of DAT file 2010-10-23 09:24:37 +09:00
mdt.h nilfs2: add routines to roll back state of DAT file 2010-10-23 09:24:37 +09:00
namei.c nilfs2: deny write access to inodes in snapshots 2010-10-23 09:24:35 +09:00
nilfs.h nilfs2: deny write access to inodes in snapshots 2010-10-23 09:24:35 +09:00
page.c nilfs2: add routines to roll back state of DAT file 2010-10-23 09:24:37 +09:00
page.h nilfs2: add routines to roll back state of DAT file 2010-10-23 09:24:37 +09:00
recovery.c nilfs2: use root object to get ifile 2010-10-23 09:24:35 +09:00
sb.h nilfs2: do not allocate multiple super block instances for a device 2010-10-23 09:24:36 +09:00
segbuf.c block: unify flags for struct bio and struct request 2010-08-07 18:20:39 +02:00
segbuf.h nilfs2: get rid of macros for segment summary information 2010-07-23 10:02:09 +09:00
segment.c nilfs2: move inode count and block count into root object 2010-10-23 09:24:35 +09:00
segment.h nilfs2: use root object to get ifile 2010-10-23 09:24:35 +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: simplify life cycle management of nilfs object 2010-10-23 09:24:36 +09:00
the_nilfs.c nilfs2: simplify life cycle management of nilfs object 2010-10-23 09:24:36 +09:00
the_nilfs.h nilfs2: simplify life cycle management of nilfs object 2010-10-23 09:24:36 +09:00