|
@@ -300,14 +300,11 @@ static inline void fill_node_footer_blkaddr(struct page *page, block_t blkaddr)
|
|
|
{
|
|
|
struct f2fs_checkpoint *ckpt = F2FS_CKPT(F2FS_P_SB(page));
|
|
|
struct f2fs_node *rn = F2FS_NODE(page);
|
|
|
- size_t crc_offset = le32_to_cpu(ckpt->checksum_offset);
|
|
|
- __u64 cp_ver = le64_to_cpu(ckpt->checkpoint_ver);
|
|
|
+ __u64 cp_ver = cur_cp_version(ckpt);
|
|
|
+
|
|
|
+ if (__is_set_ckpt_flags(ckpt, CP_CRC_RECOVERY_FLAG))
|
|
|
+ cp_ver |= (cur_cp_crc(ckpt) << 32);
|
|
|
|
|
|
- if (__is_set_ckpt_flags(ckpt, CP_CRC_RECOVERY_FLAG)) {
|
|
|
- __u64 crc = le32_to_cpu(*((__le32 *)
|
|
|
- ((unsigned char *)ckpt + crc_offset)));
|
|
|
- cp_ver |= (crc << 32);
|
|
|
- }
|
|
|
rn->footer.cp_ver = cpu_to_le64(cp_ver);
|
|
|
rn->footer.next_blkaddr = cpu_to_le32(blkaddr);
|
|
|
}
|
|
@@ -315,14 +312,11 @@ static inline void fill_node_footer_blkaddr(struct page *page, block_t blkaddr)
|
|
|
static inline bool is_recoverable_dnode(struct page *page)
|
|
|
{
|
|
|
struct f2fs_checkpoint *ckpt = F2FS_CKPT(F2FS_P_SB(page));
|
|
|
- size_t crc_offset = le32_to_cpu(ckpt->checksum_offset);
|
|
|
__u64 cp_ver = cur_cp_version(ckpt);
|
|
|
|
|
|
- if (__is_set_ckpt_flags(ckpt, CP_CRC_RECOVERY_FLAG)) {
|
|
|
- __u64 crc = le32_to_cpu(*((__le32 *)
|
|
|
- ((unsigned char *)ckpt + crc_offset)));
|
|
|
- cp_ver |= (crc << 32);
|
|
|
- }
|
|
|
+ if (__is_set_ckpt_flags(ckpt, CP_CRC_RECOVERY_FLAG))
|
|
|
+ cp_ver |= (cur_cp_crc(ckpt) << 32);
|
|
|
+
|
|
|
return cp_ver == cpver_of_node(page);
|
|
|
}
|
|
|
|