aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/node.c
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk.kim@samsung.com>2013-12-06 01:00:58 -0500
committerJaegeuk Kim <jaegeuk.kim@samsung.com>2013-12-22 20:18:06 -0500
commit6bacf52fb58aeb3e89d9a62970b85a5570aa8ace (patch)
tree422eb46c144b7ffbae193570a001de2eed490e09 /fs/f2fs/node.c
parentcfb271d485d0ec31eb92b51f4fbe54bf6542e8e6 (diff)
f2fs: add unlikely() macro for compiler more aggressively
This patch adds unlikely() macro into the most of codes. The basic rule is to add that when: - checking unusual errors, - checking page mappings, - and the other unlikely conditions. Change log from v1: - Don't add unlikely for the NULL test and error test: advised by Andi Kleen. Cc: Chao Yu <chao2.yu@samsung.com> Cc: Andi Kleen <andi@firstfloor.org> Reviewed-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs/f2fs/node.c')
-rw-r--r--fs/f2fs/node.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 2e41636be476..6c6ef772cf01 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -750,7 +750,7 @@ skip_partial:
750 if (offset[1] == 0 && 750 if (offset[1] == 0 &&
751 rn->i.i_nid[offset[0] - NODE_DIR1_BLOCK]) { 751 rn->i.i_nid[offset[0] - NODE_DIR1_BLOCK]) {
752 lock_page(page); 752 lock_page(page);
753 if (page->mapping != node_mapping) { 753 if (unlikely(page->mapping != node_mapping)) {
754 f2fs_put_page(page, 1); 754 f2fs_put_page(page, 1);
755 goto restart; 755 goto restart;
756 } 756 }
@@ -841,14 +841,14 @@ struct page *new_node_page(struct dnode_of_data *dn,
841 struct page *page; 841 struct page *page;
842 int err; 842 int err;
843 843
844 if (is_inode_flag_set(F2FS_I(dn->inode), FI_NO_ALLOC)) 844 if (unlikely(is_inode_flag_set(F2FS_I(dn->inode), FI_NO_ALLOC)))
845 return ERR_PTR(-EPERM); 845 return ERR_PTR(-EPERM);
846 846
847 page = grab_cache_page(mapping, dn->nid); 847 page = grab_cache_page(mapping, dn->nid);
848 if (!page) 848 if (!page)
849 return ERR_PTR(-ENOMEM); 849 return ERR_PTR(-ENOMEM);
850 850
851 if (!inc_valid_node_count(sbi, dn->inode)) { 851 if (unlikely(!inc_valid_node_count(sbi, dn->inode))) {
852 err = -ENOSPC; 852 err = -ENOSPC;
853 goto fail; 853 goto fail;
854 } 854 }
@@ -898,7 +898,7 @@ static int read_node_page(struct page *page, int rw)
898 898
899 get_node_info(sbi, page->index, &ni); 899 get_node_info(sbi, page->index, &ni);
900 900
901 if (ni.blk_addr == NULL_ADDR) { 901 if (unlikely(ni.blk_addr == NULL_ADDR)) {
902 f2fs_put_page(page, 1); 902 f2fs_put_page(page, 1);
903 return -ENOENT; 903 return -ENOENT;
904 } 904 }
@@ -953,11 +953,11 @@ repeat:
953 goto got_it; 953 goto got_it;
954 954
955 lock_page(page); 955 lock_page(page);
956 if (!PageUptodate(page)) { 956 if (unlikely(!PageUptodate(page))) {
957 f2fs_put_page(page, 1); 957 f2fs_put_page(page, 1);
958 return ERR_PTR(-EIO); 958 return ERR_PTR(-EIO);
959 } 959 }
960 if (page->mapping != mapping) { 960 if (unlikely(page->mapping != mapping)) {
961 f2fs_put_page(page, 1); 961 f2fs_put_page(page, 1);
962 goto repeat; 962 goto repeat;
963 } 963 }
@@ -1010,12 +1010,12 @@ repeat:
1010 blk_finish_plug(&plug); 1010 blk_finish_plug(&plug);
1011 1011
1012 lock_page(page); 1012 lock_page(page);
1013 if (page->mapping != mapping) { 1013 if (unlikely(page->mapping != mapping)) {
1014 f2fs_put_page(page, 1); 1014 f2fs_put_page(page, 1);
1015 goto repeat; 1015 goto repeat;
1016 } 1016 }
1017page_hit: 1017page_hit:
1018 if (!PageUptodate(page)) { 1018 if (unlikely(!PageUptodate(page))) {
1019 f2fs_put_page(page, 1); 1019 f2fs_put_page(page, 1);
1020 return ERR_PTR(-EIO); 1020 return ERR_PTR(-EIO);
1021 } 1021 }
@@ -1173,9 +1173,9 @@ int wait_on_node_pages_writeback(struct f2fs_sb_info *sbi, nid_t ino)
1173 cond_resched(); 1173 cond_resched();
1174 } 1174 }
1175 1175
1176 if (test_and_clear_bit(AS_ENOSPC, &mapping->flags)) 1176 if (unlikely(test_and_clear_bit(AS_ENOSPC, &mapping->flags)))
1177 ret2 = -ENOSPC; 1177 ret2 = -ENOSPC;
1178 if (test_and_clear_bit(AS_EIO, &mapping->flags)) 1178 if (unlikely(test_and_clear_bit(AS_EIO, &mapping->flags)))
1179 ret2 = -EIO; 1179 ret2 = -EIO;
1180 if (!ret) 1180 if (!ret)
1181 ret = ret2; 1181 ret = ret2;
@@ -1202,7 +1202,7 @@ static int f2fs_write_node_page(struct page *page,
1202 get_node_info(sbi, nid, &ni); 1202 get_node_info(sbi, nid, &ni);
1203 1203
1204 /* This page is already truncated */ 1204 /* This page is already truncated */
1205 if (ni.blk_addr == NULL_ADDR) { 1205 if (unlikely(ni.blk_addr == NULL_ADDR)) {
1206 dec_page_count(sbi, F2FS_DIRTY_NODES); 1206 dec_page_count(sbi, F2FS_DIRTY_NODES);
1207 unlock_page(page); 1207 unlock_page(page);
1208 return 0; 1208 return 0;
@@ -1627,14 +1627,14 @@ int restore_node_summary(struct f2fs_sb_info *sbi,
1627 list_for_each_entry_safe(page, tmp, &page_list, lru) { 1627 list_for_each_entry_safe(page, tmp, &page_list, lru) {
1628 1628
1629 lock_page(page); 1629 lock_page(page);
1630 if(PageUptodate(page)) { 1630 if (unlikely(!PageUptodate(page))) {
1631 err = -EIO;
1632 } else {
1631 rn = F2FS_NODE(page); 1633 rn = F2FS_NODE(page);
1632 sum_entry->nid = rn->footer.nid; 1634 sum_entry->nid = rn->footer.nid;
1633 sum_entry->version = 0; 1635 sum_entry->version = 0;
1634 sum_entry->ofs_in_node = 0; 1636 sum_entry->ofs_in_node = 0;
1635 sum_entry++; 1637 sum_entry++;
1636 } else {
1637 err = -EIO;
1638 } 1638 }
1639 1639
1640 list_del(&page->lru); 1640 list_del(&page->lru);