Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ext4: use unlikely to improve the efficiency of the kernel

Because the function 'sb_getblk' seldomly fails to return NULL
value,it will be better to use 'unlikely' to optimize it.

Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>

authored by

Wang Shilong and committed by
Theodore Ts'o
aebf0243 860d21e2

+13 -13
+3 -3
fs/ext4/extents.c
··· 956 956 goto cleanup; 957 957 } 958 958 bh = sb_getblk(inode->i_sb, newblock); 959 - if (!bh) { 959 + if (unlikely(!bh)) { 960 960 err = -ENOMEM; 961 961 goto cleanup; 962 962 } ··· 1029 1029 oldblock = newblock; 1030 1030 newblock = ablocks[--a]; 1031 1031 bh = sb_getblk(inode->i_sb, newblock); 1032 - if (!bh) { 1032 + if (unlikely(!bh)) { 1033 1033 err = -ENOMEM; 1034 1034 goto cleanup; 1035 1035 } ··· 1142 1142 return err; 1143 1143 1144 1144 bh = sb_getblk(inode->i_sb, newblock); 1145 - if (!bh) 1145 + if (unlikely(!bh)) 1146 1146 return -ENOMEM; 1147 1147 lock_buffer(bh); 1148 1148
+3 -3
fs/ext4/inode.c
··· 713 713 return NULL; 714 714 715 715 bh = sb_getblk(inode->i_sb, map.m_pblk); 716 - if (!bh) { 716 + if (unlikely(!bh)) { 717 717 *errp = -ENOMEM; 718 718 return NULL; 719 719 } ··· 3660 3660 iloc->offset = (inode_offset % inodes_per_block) * EXT4_INODE_SIZE(sb); 3661 3661 3662 3662 bh = sb_getblk(sb, block); 3663 - if (!bh) 3663 + if (unlikely(!bh)) 3664 3664 return -ENOMEM; 3665 3665 if (!buffer_uptodate(bh)) { 3666 3666 lock_buffer(bh); ··· 3693 3693 3694 3694 /* Is the inode bitmap in cache? */ 3695 3695 bitmap_bh = sb_getblk(sb, ext4_inode_bitmap(sb, gdp)); 3696 - if (!bitmap_bh) 3696 + if (unlikely(!bitmap_bh)) 3697 3697 goto make_io; 3698 3698 3699 3699 /*
+1 -1
fs/ext4/mmp.c
··· 93 93 *bh = NULL; 94 94 } 95 95 } 96 - if (!*bh) { 96 + if (unlikely(!*bh)) { 97 97 ext4_warning(sb, "Error while reading MMP block %llu", 98 98 mmp_block); 99 99 return -EIO;
+5 -5
fs/ext4/resize.c
··· 333 333 int err; 334 334 335 335 bh = sb_getblk(sb, blk); 336 - if (!bh) 336 + if (unlikely(!bh)) 337 337 return ERR_PTR(-ENOMEM); 338 338 if ((err = ext4_journal_get_write_access(handle, bh))) { 339 339 brelse(bh); ··· 410 410 return err; 411 411 412 412 bh = sb_getblk(sb, flex_gd->groups[group].block_bitmap); 413 - if (!bh) 413 + if (unlikely(!bh)) 414 414 return -ENOMEM; 415 415 416 416 err = ext4_journal_get_write_access(handle, bh); ··· 500 500 goto out; 501 501 502 502 gdb = sb_getblk(sb, block); 503 - if (!gdb) { 503 + if (unlikely(!gdb)) { 504 504 err = -ENOMEM; 505 505 goto out; 506 506 } ··· 1064 1064 ext4_bg_has_super(sb, group)); 1065 1065 1066 1066 bh = sb_getblk(sb, backup_block); 1067 - if (!bh) { 1067 + if (unlikely(!bh)) { 1068 1068 err = -ENOMEM; 1069 1069 break; 1070 1070 } ··· 1168 1168 static struct buffer_head *ext4_get_bitmap(struct super_block *sb, __u64 block) 1169 1169 { 1170 1170 struct buffer_head *bh = sb_getblk(sb, block); 1171 - if (!bh) 1171 + if (unlikely(!bh)) 1172 1172 return NULL; 1173 1173 if (!bh_uptodate_or_lock(bh)) { 1174 1174 if (bh_submit_read(bh) < 0) {
+1 -1
fs/ext4/xattr.c
··· 886 886 (unsigned long long)block); 887 887 888 888 new_bh = sb_getblk(sb, block); 889 - if (!new_bh) { 889 + if (unlikely(!new_bh)) { 890 890 error = -ENOMEM; 891 891 getblk_failed: 892 892 ext4_free_blocks(handle, inode, NULL, block, 1,