diff options
-rw-r--r-- | fs/f2fs/node.h | 67 |
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 | */ |
278 | static inline int is_cold_file(struct inode *inode) | 278 | static 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 | ||
283 | static inline void set_cold_file(struct inode *inode) | 283 | static 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 | ||
288 | static 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 | |||
293 | static inline void set_cp_file(struct inode *inode) | ||
294 | { | ||
295 | F2FS_I(inode)->i_advise |= FADVISE_CP_BIT; | ||
296 | } | ||
297 | 292 | ||
298 | static inline int is_cold_data(struct page *page) | 293 | static 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 | ||
313 | static inline int is_cold_node(struct page *page) | 308 | static 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 | ||
321 | static 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 | |||
329 | static 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 | ||
337 | static inline void set_cold_node(struct inode *inode, struct page *page) | 319 | static 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 | ||
349 | static inline void set_fsync_mark(struct page *page, int mark) | 331 | static 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 | |||
361 | static 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) | ||