diff options
Diffstat (limited to 'fs/f2fs/segment.c')
| -rw-r--r-- | fs/f2fs/segment.c | 11 | 
1 files changed, 4 insertions, 7 deletions
| diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index df9ed75f0b7a..575d3dc418d0 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -9,6 +9,7 @@  #include <linux/f2fs_fs.h>  #include <linux/bio.h>  #include <linux/blkdev.h> +#include <linux/sched/mm.h>  #include <linux/prefetch.h>  #include <linux/kthread.h>  #include <linux/swap.h> @@ -245,16 +246,14 @@ retry:  								LOOKUP_NODE);  			if (err) {  				if (err == -ENOMEM) { -					congestion_wait(BLK_RW_ASYNC, -							DEFAULT_IO_TIMEOUT); -					cond_resched(); +					memalloc_retry_wait(GFP_NOFS);  					goto retry;  				}  				err = -EAGAIN;  				goto next;  			} -			err = f2fs_get_node_info(sbi, dn.nid, &ni); +			err = f2fs_get_node_info(sbi, dn.nid, &ni, false);  			if (err) {  				f2fs_put_dnode(&dn);  				return err; @@ -424,9 +423,7 @@ retry:  			err = f2fs_do_write_data_page(&fio);  			if (err) {  				if (err == -ENOMEM) { -					congestion_wait(BLK_RW_ASYNC, -							DEFAULT_IO_TIMEOUT); -					cond_resched(); +					memalloc_retry_wait(GFP_NOFS);  					goto retry;  				}  				unlock_page(page); |