• Tejun Heo's avatar
    cfq-iosched: simplify control flow in cfq_get_queue() · 4ebc1c61
    Tejun Heo authored
    cfq_get_queue()'s control flow looks like the following.
    
    	async_cfqq = NULL;
    	cfqq = NULL;
    
    	if (!is_sync) {
    		...
    		async_cfqq = ...;
    		cfqq = *async_cfqq;
    	}
    
    	if (!cfqq)
    		cfqq = ...;
    
    	if (!is_sync && !(*async_cfqq))
    		...;
    
    The only thing the local variable init, the second if, and the
    async_cfqq test in the third if achieves is to skip cfqq creation and
    installation if *async_cfqq was already non-NULL.  This is needlessly
    complicated with different tests examining the same condition.
    Simplify it to the following.
    
    	if (!is_sync) {
    		...
    		async_cfqq = ...;
    		cfqq = *async_cfqq;
    		if (cfqq)
    			goto out;
    	}
    
    	cfqq = ...;
    
    	if (!is_sync)
    		...;
     out:
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarJeff Moyer <jmoyer@redhat.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Arianna Avanzini <avanzini.arianna@gmail.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    4ebc1c61
cfq-iosched.c 122 KB