|
@@ -213,9 +213,15 @@ static int __revoke_inmem_pages(struct inode *inode,
|
|
|
struct node_info ni;
|
|
|
|
|
|
trace_f2fs_commit_inmem_page(page, INMEM_REVOKE);
|
|
|
-
|
|
|
+retry:
|
|
|
set_new_dnode(&dn, inode, NULL, NULL, 0);
|
|
|
- if (get_dnode_of_data(&dn, page->index, LOOKUP_NODE)) {
|
|
|
+ err = get_dnode_of_data(&dn, page->index, LOOKUP_NODE);
|
|
|
+ if (err) {
|
|
|
+ if (err == -ENOMEM) {
|
|
|
+ congestion_wait(BLK_RW_ASYNC, HZ/50);
|
|
|
+ cond_resched();
|
|
|
+ goto retry;
|
|
|
+ }
|
|
|
err = -EAGAIN;
|
|
|
goto next;
|
|
|
}
|