• N
    btrfs: Refactor main loop in extent_readpages · 61ed3a14
    Nikolay Borisov 提交于
    extent_readpages processes all pages in the readlist in batches of 16,
    this is implemented by a single for loop but thanks to an if condition
    the loop does 2 things based on whether we've filled the batch or not.
    Additionally due to the structure of the code there is an additional
    check which deals with partial batches.
    
    Streamline all of this by explicitly using two loops. The outter one is
    used to process all pages while the inner one just fills in the batch
    of 16 (currently). Due to this new structure the code guarantees that
    all pages are processed in the loop hence the code to deal with any
    leftovers is eliminated.
    
    This also enable the compiler to inline __extent_readpages:
    
    	./scripts/bloat-o-meter fs/btrfs/extent_io.o extent_io.for
    
    	add/remove: 0/1 grow/shrink: 1/0 up/down: 660/-820 (-160)
    	Function                                     old     new   delta
    	extent_readpages                             476    1136    +660
    	__extent_readpages                           820       -    -820
    	Total: Before=44315, After=44155, chg -0.36%
    Signed-off-by: NNikolay Borisov <nborisov@suse.com>
    Reviewed-by: NDavid Sterba <dsterba@suse.com>
    Signed-off-by: NDavid Sterba <dsterba@suse.com>
    61ed3a14
extent_io.c 148.5 KB