diff options
| author | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-09-09 16:59:39 -0700 |
|---|---|---|
| committer | Mister Oyster <oysterized@gmail.com> | 2017-04-13 12:34:05 +0200 |
| commit | 872023a18f17407014443cfce286bb511ab50d34 (patch) | |
| tree | 7806349c09b60f112c0e0c3ca49db9bc8337baad /fs/f2fs/node.c | |
| parent | 0facf6bea0362c6aaa40e4c9519fa09056d0e7f5 (diff) | |
f2fs: avoid ENOMEM during roll-forward recovery
This patch gives another chances during roll-forward recovery regarding to
-ENOMEM.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/node.c')
| -rw-r--r-- | fs/f2fs/node.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index dbe471e94..0ff257507 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c @@ -2028,10 +2028,12 @@ int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) if (unlikely(old_ni.blk_addr != NULL_ADDR)) return -EINVAL; - +retry: ipage = f2fs_grab_cache_page(NODE_MAPPING(sbi), ino, false); - if (!ipage) - return -ENOMEM; + if (!ipage) { + congestion_wait(BLK_RW_ASYNC, HZ/50); + goto retry; + } /* Should not use this inode from free nid list */ remove_free_nid(NM_I(sbi), ino); |
