forked from Minki/linux
f2fs-for-4.14-rc5
This contains one bug fix which causes a kernel panic during fstrim introduced in 4.14-rc1. -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE00UqedjCtOrGVvQiQBSofoJIUNIFAlnc+awACgkQQBSofoJI UNIQLg/9HB/NikmBxVtkDtwrTKpVEPK5AYRHOvoa9k6twGkU6pB8FE0cd2PstwlZ tAwRstyt8W9nGzF5BPY+WAyVs9ybc26wIqNo13cnzwXbc0/cc4pTy8lzeiFQdQrK JIzz2lHNt0b5euCsEEAsnwK+rTb5DPUMKm8JkBUQ8f94oxIHLWvg7Um9FBppTw7s JNOJ8/ymzQVNlWu7VxFaVwfUPbEhK7gtpSWjO65fiprQ0JjwXLEr65356XU2XW8x lhQkByPMfMv1ZyGSNr3m4Hih0M6250slNHzwrZDxTdH7NDJmy1DfcPiM+epMWZMa 4uT+2hsxhTCqDQbIEvP9jv+KVHV7AG9ldCD04a0RD+XoNKDVLKlzSMFWVcWE/d0H jSaDrMZj+taseF72x/efP8P/RrTbzqYsqBoAkoByibOXvBf7U8vsLK4NuG7agoL4 EUXDMuVJDB5d8LJRSYt0lPI5R+lhRVlVuint7a9T09yiLyCeR0wGf+eoH9C9Y4V8 t/mEM9azBi9l7T0yraVfqnh+SPzwwlxYOLQeZTi0bf3uqmBOeKb0OvfOiwboOnaZ 5Rl6jYD/hgZAowXpbohRjqPJhMoLMabsTJ4kHj6uJcQDhvTqDpamm9g9Afsiyr6z xPYo09iHHlWA/iSiV7VSnbZu8hr59bchVt86r77fy/4YH3DXOcM= =fAsG -----END PGP SIGNATURE----- Merge tag 'f2fs-for-4.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs Pull f2fs fix from Jaegeuk Kim: "This contains one bug fix which causes a kernel panic during fstrim introduced in 4.14-rc1" * tag 'f2fs-for-4.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: f2fs: fix potential panic during fstrim
This commit is contained in:
commit
7056964a85
@ -2525,7 +2525,7 @@ void invalidate_blocks(struct f2fs_sb_info *sbi, block_t addr);
|
|||||||
bool is_checkpointed_data(struct f2fs_sb_info *sbi, block_t blkaddr);
|
bool is_checkpointed_data(struct f2fs_sb_info *sbi, block_t blkaddr);
|
||||||
void refresh_sit_entry(struct f2fs_sb_info *sbi, block_t old, block_t new);
|
void refresh_sit_entry(struct f2fs_sb_info *sbi, block_t old, block_t new);
|
||||||
void stop_discard_thread(struct f2fs_sb_info *sbi);
|
void stop_discard_thread(struct f2fs_sb_info *sbi);
|
||||||
void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi);
|
void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi, bool umount);
|
||||||
void clear_prefree_segments(struct f2fs_sb_info *sbi, struct cp_control *cpc);
|
void clear_prefree_segments(struct f2fs_sb_info *sbi, struct cp_control *cpc);
|
||||||
void release_discard_addrs(struct f2fs_sb_info *sbi);
|
void release_discard_addrs(struct f2fs_sb_info *sbi);
|
||||||
int npages_for_summary_flush(struct f2fs_sb_info *sbi, bool for_ra);
|
int npages_for_summary_flush(struct f2fs_sb_info *sbi, bool for_ra);
|
||||||
|
@ -1210,11 +1210,11 @@ void stop_discard_thread(struct f2fs_sb_info *sbi)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* This comes from f2fs_put_super and f2fs_trim_fs */
|
/* This comes from f2fs_put_super and f2fs_trim_fs */
|
||||||
void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi)
|
void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi, bool umount)
|
||||||
{
|
{
|
||||||
__issue_discard_cmd(sbi, false);
|
__issue_discard_cmd(sbi, false);
|
||||||
__drop_discard_cmd(sbi);
|
__drop_discard_cmd(sbi);
|
||||||
__wait_discard_cmd(sbi, false);
|
__wait_discard_cmd(sbi, !umount);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mark_discard_range_all(struct f2fs_sb_info *sbi)
|
static void mark_discard_range_all(struct f2fs_sb_info *sbi)
|
||||||
@ -2244,7 +2244,7 @@ int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range)
|
|||||||
}
|
}
|
||||||
/* It's time to issue all the filed discards */
|
/* It's time to issue all the filed discards */
|
||||||
mark_discard_range_all(sbi);
|
mark_discard_range_all(sbi);
|
||||||
f2fs_wait_discard_bios(sbi);
|
f2fs_wait_discard_bios(sbi, false);
|
||||||
out:
|
out:
|
||||||
range->len = F2FS_BLK_TO_BYTES(cpc.trimmed);
|
range->len = F2FS_BLK_TO_BYTES(cpc.trimmed);
|
||||||
return err;
|
return err;
|
||||||
|
@ -801,7 +801,7 @@ static void f2fs_put_super(struct super_block *sb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* be sure to wait for any on-going discard commands */
|
/* be sure to wait for any on-going discard commands */
|
||||||
f2fs_wait_discard_bios(sbi);
|
f2fs_wait_discard_bios(sbi, true);
|
||||||
|
|
||||||
if (f2fs_discard_en(sbi) && !sbi->discard_blks) {
|
if (f2fs_discard_en(sbi) && !sbi->discard_blks) {
|
||||||
struct cp_control cpc = {
|
struct cp_control cpc = {
|
||||||
|
Loading…
Reference in New Issue
Block a user