mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
BACKPORT: f2fs: add parameter @len to f2fs_invalidate_internal_cache()
New function can process some consecutive blocks at a time. Bug: 394006856 Change-Id: I6741915ec3fba137ae6295688b6c4f8474411177 Signed-off-by: Yi Sun <yi.sun@unisoc.com> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> (cherry picked from commit d217b5cea488c0f644c189f91b636aeefa12deb9)
This commit is contained in:
@@ -1491,7 +1491,7 @@ static int __allocate_data_block(struct dnode_of_data *dn, int seg_type)
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (GET_SEGNO(sbi, old_blkaddr) != NULL_SEGNO)
|
if (GET_SEGNO(sbi, old_blkaddr) != NULL_SEGNO)
|
||||||
f2fs_invalidate_internal_cache(sbi, old_blkaddr);
|
f2fs_invalidate_internal_cache(sbi, old_blkaddr, 1);
|
||||||
|
|
||||||
f2fs_update_data_blkaddr(dn, dn->data_blkaddr);
|
f2fs_update_data_blkaddr(dn, dn->data_blkaddr);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -4634,10 +4634,10 @@ static inline void f2fs_truncate_meta_inode_pages(struct f2fs_sb_info *sbi,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline void f2fs_invalidate_internal_cache(struct f2fs_sb_info *sbi,
|
static inline void f2fs_invalidate_internal_cache(struct f2fs_sb_info *sbi,
|
||||||
block_t blkaddr)
|
block_t blkaddr, unsigned int len)
|
||||||
{
|
{
|
||||||
f2fs_truncate_meta_inode_pages(sbi, blkaddr, 1);
|
f2fs_truncate_meta_inode_pages(sbi, blkaddr, len);
|
||||||
f2fs_invalidate_compress_pages_range(sbi, blkaddr, 1);
|
f2fs_invalidate_compress_pages_range(sbi, blkaddr, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define EFSBADCRC EBADMSG /* Bad CRC detected */
|
#define EFSBADCRC EBADMSG /* Bad CRC detected */
|
||||||
|
|||||||
@@ -1390,7 +1390,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
|
|||||||
page_address(mpage), PAGE_SIZE);
|
page_address(mpage), PAGE_SIZE);
|
||||||
f2fs_put_page(mpage, 1);
|
f2fs_put_page(mpage, 1);
|
||||||
|
|
||||||
f2fs_invalidate_internal_cache(fio.sbi, fio.old_blkaddr);
|
f2fs_invalidate_internal_cache(fio.sbi, fio.old_blkaddr, 1);
|
||||||
|
|
||||||
set_page_dirty(fio.encrypted_page);
|
set_page_dirty(fio.encrypted_page);
|
||||||
if (clear_page_dirty_for_io(fio.encrypted_page))
|
if (clear_page_dirty_for_io(fio.encrypted_page))
|
||||||
|
|||||||
@@ -2415,7 +2415,7 @@ void f2fs_invalidate_blocks(struct f2fs_sb_info *sbi, block_t addr)
|
|||||||
if (addr == NEW_ADDR || addr == COMPRESS_ADDR)
|
if (addr == NEW_ADDR || addr == COMPRESS_ADDR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
f2fs_invalidate_internal_cache(sbi, addr);
|
f2fs_invalidate_internal_cache(sbi, addr, 1);
|
||||||
|
|
||||||
/* add it into sit main buffer */
|
/* add it into sit main buffer */
|
||||||
down_write(&sit_i->sentry_lock);
|
down_write(&sit_i->sentry_lock);
|
||||||
@@ -3478,7 +3478,7 @@ reallocate:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO)
|
if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO)
|
||||||
f2fs_invalidate_internal_cache(fio->sbi, fio->old_blkaddr);
|
f2fs_invalidate_internal_cache(fio->sbi, fio->old_blkaddr, 1);
|
||||||
|
|
||||||
/* writeout dirty page into bdev */
|
/* writeout dirty page into bdev */
|
||||||
f2fs_submit_page_write(fio);
|
f2fs_submit_page_write(fio);
|
||||||
@@ -3673,7 +3673,7 @@ void f2fs_do_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
|
|||||||
update_sit_entry(sbi, new_blkaddr, 1);
|
update_sit_entry(sbi, new_blkaddr, 1);
|
||||||
}
|
}
|
||||||
if (GET_SEGNO(sbi, old_blkaddr) != NULL_SEGNO) {
|
if (GET_SEGNO(sbi, old_blkaddr) != NULL_SEGNO) {
|
||||||
f2fs_invalidate_internal_cache(sbi, old_blkaddr);
|
f2fs_invalidate_internal_cache(sbi, old_blkaddr, 1);
|
||||||
if (!from_gc)
|
if (!from_gc)
|
||||||
update_segment_mtime(sbi, old_blkaddr, 0);
|
update_segment_mtime(sbi, old_blkaddr, 0);
|
||||||
update_sit_entry(sbi, old_blkaddr, -1);
|
update_sit_entry(sbi, old_blkaddr, -1);
|
||||||
|
|||||||
Reference in New Issue
Block a user