mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 18:09:57 +00:00
nilfs2: flush palloc cache before manipulating data pages of GC dat
Data pages in gcdat metadata file (i.e. the secondary DAT for GC), are cleared or even moved back to the normal DAT when a shot of garbage collection was done. Buffer heads held by the palloc cache of gcdat must be cleared before these page cache manipulation. This adds nilfs_palloc_clear_cache() to ensure this. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
This commit is contained in:
parent
8908b2f70b
commit
c3ea56c800
1 changed files with 3 additions and 0 deletions
|
@ -61,6 +61,8 @@ void nilfs_commit_gcdat_inode(struct the_nilfs *nilfs)
|
||||||
|
|
||||||
nilfs_bmap_commit_gcdat(gii->i_bmap, dii->i_bmap);
|
nilfs_bmap_commit_gcdat(gii->i_bmap, dii->i_bmap);
|
||||||
|
|
||||||
|
nilfs_palloc_clear_cache(dat);
|
||||||
|
nilfs_palloc_clear_cache(gcdat);
|
||||||
nilfs_clear_dirty_pages(mapping);
|
nilfs_clear_dirty_pages(mapping);
|
||||||
nilfs_copy_back_pages(mapping, gmapping);
|
nilfs_copy_back_pages(mapping, gmapping);
|
||||||
/* note: mdt dirty flags should be cleared by segctor. */
|
/* note: mdt dirty flags should be cleared by segctor. */
|
||||||
|
@ -79,6 +81,7 @@ void nilfs_clear_gcdat_inode(struct the_nilfs *nilfs)
|
||||||
gcdat->i_state = I_CLEAR;
|
gcdat->i_state = I_CLEAR;
|
||||||
gii->i_flags = 0;
|
gii->i_flags = 0;
|
||||||
|
|
||||||
|
nilfs_palloc_clear_cache(gcdat);
|
||||||
truncate_inode_pages(gcdat->i_mapping, 0);
|
truncate_inode_pages(gcdat->i_mapping, 0);
|
||||||
truncate_inode_pages(&gii->i_btnode_cache, 0);
|
truncate_inode_pages(&gii->i_btnode_cache, 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue