• Josef Bacik's avatar
    Btrfs: check reserved when deciding to background flush · baee8790
    Josef Bacik authored
    We will sometimes start background flushing the various enospc related things
    (delayed nodes, delalloc, etc) if we are getting close to reserving all of our
    available space.  We don't want to do this however when we are actually using
    this space as it causes unneeded thrashing.  We currently try to do this by
    checking bytes_used >= thresh, but bytes_used is only part of the equation, we
    need to use bytes_reserved as well as this represents space that is very likely
    to become bytes_used in the future.
    
    My tracing tool will keep count of the number of times we kick off the async
    flusher, the following are counts for the entire run of generic/027
    
    		No Patch	Patch
    avg: 		5385		5009
    median:		5500		4916
    
    We skewed lower than the average with my patch and higher than the average with
    the patch, overall it cuts the flushing from anywhere from 5-10%, which in the
    case of actual ENOSPC is quite helpful.  Thanks,
    Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
    Reviewed-by: default avatarLiu Bo <bo.li.liu@oracle.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    baee8790
extent-tree.c 293 KB