If the device does not support discard, we should write zero blocks
to avoid roll-forward recovery.
Reported-and-tested-by: Huajun Li <huajun.li@intel.com>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
memset(raw_node, 0xff, sizeof(struct f2fs_node));
- main_area_node_seg_blk_offset += F2FS_BLKSIZE;
+ /* avoid power-off-recovery based on roll-forward policy */
+ main_area_node_seg_blk_offset = le32_to_cpu(super_block.main_blkaddr);
+ main_area_node_seg_blk_offset += config.cur_seg[CURSEG_WARM_NODE] *
+ config.blks_per_seg;
+ main_area_node_seg_blk_offset *= blk_size_bytes;
+
if (dev_write(raw_node, main_area_node_seg_blk_offset, F2FS_BLKSIZE)) {
MSG(1, "\tError: While writing the raw_node to disk!!!\n");
return -1;