|
@@ -1881,15 +1881,14 @@ void allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
|
|
|
|
|
|
stat_inc_block_count(sbi, curseg);
|
|
|
|
|
|
+ if (!__has_curseg_space(sbi, type))
|
|
|
+ sit_i->s_ops->allocate_segment(sbi, type, false);
|
|
|
/*
|
|
|
- * SIT information should be updated before segment allocation,
|
|
|
- * since SSR needs latest valid block information.
|
|
|
+ * SIT information should be updated after segment allocation,
|
|
|
+ * since we need to keep dirty segments precisely under SSR.
|
|
|
*/
|
|
|
refresh_sit_entry(sbi, old_blkaddr, *new_blkaddr);
|
|
|
|
|
|
- if (!__has_curseg_space(sbi, type))
|
|
|
- sit_i->s_ops->allocate_segment(sbi, type, false);
|
|
|
-
|
|
|
mutex_unlock(&sit_i->sentry_lock);
|
|
|
|
|
|
if (page && IS_NODESEG(type))
|