|
@@ -212,11 +212,19 @@ static inline void fill_node_footer(struct page *page, nid_t nid,
|
|
|
nid_t ino, unsigned int ofs, bool reset)
|
|
|
{
|
|
|
struct f2fs_node *rn = F2FS_NODE(page);
|
|
|
+ unsigned int old_flag = 0;
|
|
|
+
|
|
|
if (reset)
|
|
|
memset(rn, 0, sizeof(*rn));
|
|
|
+ else
|
|
|
+ old_flag = le32_to_cpu(rn->footer.flag);
|
|
|
+
|
|
|
rn->footer.nid = cpu_to_le32(nid);
|
|
|
rn->footer.ino = cpu_to_le32(ino);
|
|
|
- rn->footer.flag = cpu_to_le32(ofs << OFFSET_BIT_SHIFT);
|
|
|
+
|
|
|
+ /* should remain old flag bits such as COLD_BIT_SHIFT */
|
|
|
+ rn->footer.flag = cpu_to_le32((ofs << OFFSET_BIT_SHIFT) |
|
|
|
+ (old_flag & OFFSET_BIT_MASK));
|
|
|
}
|
|
|
|
|
|
static inline void copy_node_footer(struct page *dst, struct page *src)
|