• J
    btrfs: fix error handling in btrfs_del_csums · b86652be
    Josef Bacik 提交于
    Error injection stress would sometimes fail with checksums on disk that
    did not have a corresponding extent.  This occurred because the pattern
    in btrfs_del_csums was
    
    	while (1) {
    		ret = btrfs_search_slot();
    		if (ret < 0)
    			break;
    	}
    	ret = 0;
    out:
    	btrfs_free_path(path);
    	return ret;
    
    If we got an error from btrfs_search_slot we'd clear the error because
    we were breaking instead of goto out.  Instead of using goto out, simply
    handle the cases where we may leave a random value in ret, and get rid
    of the
    
    	ret = 0;
    out:
    
    pattern and simply allow break to have the proper error reporting.  With
    this fix we properly abort the transaction and do not commit thinking we
    successfully deleted the csum.
    Reviewed-by: NQu Wenruo <wqu@suse.com>
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: NJosef Bacik <josef@toxicpanda.com>
    Reviewed-by: NDavid Sterba <dsterba@suse.com>
    Signed-off-by: NDavid Sterba <dsterba@suse.com>
    b86652be
file-item.c 33.9 KB