• Greg Harm's avatar
    ext4: Don't normalize an falloc request if it can fit in 1 extent. · 3c6fe770
    Greg Harm authored
    If an fallocate request fits in EXT_UNINIT_MAX_LEN, then set the
    EXT4_GET_BLOCKS_NO_NORMALIZE flag. For larger fallocate requests,
    let mballoc.c normalize the request.
    
    This fixes a problem where large requests were being split into
    non-contiguous extents due to commit 556b27ab: ext4: do not
    normalize block requests from fallocate.
    
    Testing: 
    *) Checked that 8.x MB falloc'ed files are still laid down next to
    each other (contiguously).
    *) Checked that the maximum size extent (127.9MB) is allocated as 1
    extent.
    *) Checked that a 1GB file is somewhat contiguous (often 5-6
    non-contiguous extents now).
    *) Checked that a 120MB file can still be falloc'ed even if there are
    no single extents large enough to hold it.
    Signed-off-by: default avatarGreg Harm <gharm@google.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    3c6fe770
extents.c 133 KB