|
@@ -1156,6 +1156,9 @@ static int f2fs_write_node_page(struct page *page,
|
|
|
block_t new_addr;
|
|
|
struct node_info ni;
|
|
|
|
|
|
+ if (sbi->por_doing)
|
|
|
+ goto redirty_out;
|
|
|
+
|
|
|
wait_on_page_writeback(page);
|
|
|
|
|
|
/* get old block addr of this node page */
|
|
@@ -1171,12 +1174,8 @@ static int f2fs_write_node_page(struct page *page,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- if (wbc->for_reclaim) {
|
|
|
- dec_page_count(sbi, F2FS_DIRTY_NODES);
|
|
|
- wbc->pages_skipped++;
|
|
|
- set_page_dirty(page);
|
|
|
- return AOP_WRITEPAGE_ACTIVATE;
|
|
|
- }
|
|
|
+ if (wbc->for_reclaim)
|
|
|
+ goto redirty_out;
|
|
|
|
|
|
mutex_lock(&sbi->node_write);
|
|
|
set_page_writeback(page);
|
|
@@ -1186,6 +1185,12 @@ static int f2fs_write_node_page(struct page *page,
|
|
|
mutex_unlock(&sbi->node_write);
|
|
|
unlock_page(page);
|
|
|
return 0;
|
|
|
+
|
|
|
+redirty_out:
|
|
|
+ dec_page_count(sbi, F2FS_DIRTY_NODES);
|
|
|
+ wbc->pages_skipped++;
|
|
|
+ set_page_dirty(page);
|
|
|
+ return AOP_WRITEPAGE_ACTIVATE;
|
|
|
}
|
|
|
|
|
|
/*
|