aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/node.h
diff options
context:
space:
mode:
authorNamjae Jeon <namjae.jeon@samsung.com>2013-05-23 09:58:40 -0400
committerJaegeuk Kim <jaegeuk.kim@samsung.com>2013-05-28 02:03:05 -0400
commita06a2416038d317a6430e453f5bc5fd81834554d (patch)
treeca102d6f073bfccb126c43fb45fe6991f46587fe /fs/f2fs/node.h
parent4777f86b7c0a587dde275a5c1ff3022b2e601313 (diff)
f2fs: optimize several routines in node.h
There are various functions with common code which could be separated out to make common routines. So, made new routines and in order to retain the same call path and no major changes, written some macros to access those routines. Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> Signed-off-by: Amit Sahrawat <a.sahrawat@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs/f2fs/node.h')
-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)