diff options
| author | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-01-29 08:57:59 -0800 |
|---|---|---|
| committer | Mister Oyster <oysterized@gmail.com> | 2017-04-13 12:32:58 +0200 |
| commit | 1f6e47829a747bf8e0bb3e6dd147eb0eb2d8fc51 (patch) | |
| tree | 9984be95abc4a7e05ade012c73cf4390b211f261 /fs | |
| parent | 6b57b262733e3aae846af0121ac3900b553e23f2 (diff) | |
f2fs: flush bios to handle cp_error in put_super
Sometimes, if cp_error is set, there remains under-writeback pages, resulting in
kernel hang in put_super.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/f2fs/super.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 1442bdee3..dab987c8a 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -581,6 +581,13 @@ static void f2fs_put_super(struct super_block *sb) f2fs_leave_shrinker(sbi); mutex_unlock(&sbi->umount_mutex); + /* our cp_error case, we can wait for any writeback page */ + if (get_pages(sbi, F2FS_WRITEBACK)) { + f2fs_submit_merged_bio(sbi, DATA, WRITE); + f2fs_submit_merged_bio(sbi, NODE, WRITE); + f2fs_submit_merged_bio(sbi, META, WRITE); + } + iput(sbi->node_inode); iput(sbi->meta_inode); |
