diff options
author | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-12-06 01:00:58 -0500 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-12-22 20:18:06 -0500 |
commit | 6bacf52fb58aeb3e89d9a62970b85a5570aa8ace (patch) | |
tree | 422eb46c144b7ffbae193570a001de2eed490e09 /fs/f2fs/node.c | |
parent | cfb271d485d0ec31eb92b51f4fbe54bf6542e8e6 (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.c | 28 |
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 | } |
1017 | page_hit: | 1017 | page_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); |