|
|
@@ -1340,10 +1340,14 @@ static int __write_node_page(struct page *page, bool atomic, bool *submitted,
|
|
|
|
|
|
trace_f2fs_writepage(page, NODE);
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi))) {
|
|
|
+ dec_page_count(sbi, F2FS_DIRTY_NODES);
|
|
|
+ unlock_page(page);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
|
|
|
goto redirty_out;
|
|
|
- if (unlikely(f2fs_cp_error(sbi)))
|
|
|
- goto redirty_out;
|
|
|
|
|
|
/* get old block addr of this node page */
|
|
|
nid = nid_of_node(page);
|
|
|
@@ -1580,12 +1584,6 @@ next_step:
|
|
|
struct page *page = pvec.pages[i];
|
|
|
bool submitted = false;
|
|
|
|
|
|
- if (unlikely(f2fs_cp_error(sbi))) {
|
|
|
- pagevec_release(&pvec);
|
|
|
- ret = -EIO;
|
|
|
- goto out;
|
|
|
- }
|
|
|
-
|
|
|
/*
|
|
|
* flushing sequence with step:
|
|
|
* 0. indirect nodes
|
|
|
@@ -1655,9 +1653,12 @@ continue_unlock:
|
|
|
step++;
|
|
|
goto next_step;
|
|
|
}
|
|
|
-out:
|
|
|
+
|
|
|
if (nwritten)
|
|
|
f2fs_submit_merged_write(sbi, NODE);
|
|
|
+
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
return ret;
|
|
|
}
|
|
|
|