aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/f2fs/node.h67
1 files changed, 19 insertions, 48 deletions
diff --git a/fs/f2fs/node.h b/fs/f2fs/node.h
index 0a2d72f0024d..a503661307db 100644
--- a/fs/f2fs/node.h
+++ b/fs/f2fs/node.h
@@ -275,25 +275,20 @@ static inline nid_t get_nid(struct page *p, int off, bool i)
275 * - Mark cold node blocks in their node footer 275 * - Mark cold node blocks in their node footer
276 * - Mark cold data pages in page cache 276 * - Mark cold data pages in page cache
277 */ 277 */
278static inline int is_cold_file(struct inode *inode) 278static inline int is_file(struct inode *inode, int type)
279{ 279{
280 return F2FS_I(inode)->i_advise & FADVISE_COLD_BIT; 280 return F2FS_I(inode)->i_advise & type;
281} 281}
282 282
283static inline void set_cold_file(struct inode *inode) 283static inline void set_file(struct inode *inode, int type)
284{ 284{
285 F2FS_I(inode)->i_advise |= FADVISE_COLD_BIT; 285 F2FS_I(inode)->i_advise |= type;
286} 286}
287 287
288static inline int is_cp_file(struct inode *inode) 288#define is_cold_file(inode) is_file(inode, FADVISE_COLD_BIT)
289{ 289#define is_cp_file(inode) is_file(inode, FADVISE_CP_BIT)
290 return F2FS_I(inode)->i_advise & FADVISE_CP_BIT; 290#define set_cold_file(inode) set_file(inode, FADVISE_COLD_BIT)
291} 291#define set_cp_file(inode) set_file(inode, FADVISE_CP_BIT)
292
293static inline void set_cp_file(struct inode *inode)
294{
295 F2FS_I(inode)->i_advise |= FADVISE_CP_BIT;
296}
297 292
298static inline int is_cold_data(struct page *page) 293static inline int is_cold_data(struct page *page)
299{ 294{
@@ -310,29 +305,16 @@ static inline void clear_cold_data(struct page *page)
310 ClearPageChecked(page); 305 ClearPageChecked(page);
311} 306}
312 307
313static inline int is_cold_node(struct page *page) 308static inline int is_node(struct page *page, int type)
314{ 309{
315 void *kaddr = page_address(page); 310 void *kaddr = page_address(page);
316 struct f2fs_node *rn = (struct f2fs_node *)kaddr; 311 struct f2fs_node *rn = (struct f2fs_node *)kaddr;
317 unsigned int flag = le32_to_cpu(rn->footer.flag); 312 return le32_to_cpu(rn->footer.flag) & (1 << type);
318 return flag & (0x1 << COLD_BIT_SHIFT);
319} 313}
320 314
321static inline unsigned char is_fsync_dnode(struct page *page) 315#define is_cold_node(page) is_node(page, COLD_BIT_SHIFT)
322{ 316#define is_fsync_dnode(page) is_node(page, FSYNC_BIT_SHIFT)
323 void *kaddr = page_address(page); 317#define is_dent_dnode(page) is_node(page, DENT_BIT_SHIFT)
324 struct f2fs_node *rn = (struct f2fs_node *)kaddr;
325 unsigned int flag = le32_to_cpu(rn->footer.flag);
326 return flag & (0x1 << FSYNC_BIT_SHIFT);
327}
328
329static inline unsigned char is_dent_dnode(struct page *page)
330{
331 void *kaddr = page_address(page);
332 struct f2fs_node *rn = (struct f2fs_node *)kaddr;
333 unsigned int flag = le32_to_cpu(rn->footer.flag);
334 return flag & (0x1 << DENT_BIT_SHIFT);
335}
336 318
337static inline void set_cold_node(struct inode *inode, struct page *page) 319static inline void set_cold_node(struct inode *inode, struct page *page)
338{ 320{
@@ -346,26 +328,15 @@ static inline void set_cold_node(struct inode *inode, struct page *page)
346 rn->footer.flag = cpu_to_le32(flag); 328 rn->footer.flag = cpu_to_le32(flag);
347} 329}
348 330
349static inline void set_fsync_mark(struct page *page, int mark) 331static inline void set_mark(struct page *page, int mark, int type)
350{
351 void *kaddr = page_address(page);
352 struct f2fs_node *rn = (struct f2fs_node *)kaddr;
353 unsigned int flag = le32_to_cpu(rn->footer.flag);
354 if (mark)
355 flag |= (0x1 << FSYNC_BIT_SHIFT);
356 else
357 flag &= ~(0x1 << FSYNC_BIT_SHIFT);
358 rn->footer.flag = cpu_to_le32(flag);
359}
360
361static inline void set_dentry_mark(struct page *page, int mark)
362{ 332{
363 void *kaddr = page_address(page); 333 struct f2fs_node *rn = (struct f2fs_node *)page_address(page);
364 struct f2fs_node *rn = (struct f2fs_node *)kaddr;
365 unsigned int flag = le32_to_cpu(rn->footer.flag); 334 unsigned int flag = le32_to_cpu(rn->footer.flag);
366 if (mark) 335 if (mark)
367 flag |= (0x1 << DENT_BIT_SHIFT); 336 flag |= (0x1 << type);
368 else 337 else
369 flag &= ~(0x1 << DENT_BIT_SHIFT); 338 flag &= ~(0x1 << type);
370 rn->footer.flag = cpu_to_le32(flag); 339 rn->footer.flag = cpu_to_le32(flag);
371} 340}
341#define set_dentry_mark(page, mark) set_mark(page, mark, DENT_BIT_SHIFT)
342#define set_fsync_mark(page, mark) set_mark(page, mark, FSYNC_BIT_SHIFT)