• chandan's avatar
    Btrfs: btrfs_defrag_file: Fix calculation of max_to_defrag. · 070034bd
    chandan authored
    max_to_defrag represents the number of pages to defrag rather than the last
    page of the file range to be defragged.
    
    Consider a file having 10 4k blocks (i.e. blocks in the range [0 - 9]). If the
    defrag ioctl was invoked for the block range [3 - 6], then max_to_defrag
    should actually have the value 4. Instead in the current code we end up
    setting it to 6.
    
    Now, this does not (yet) cause an issue since the first part of the while loop
    condition in btrfs_defrag_file() (i.e. "i <= last_index") causes the control
    to flow out of the while loop before any buggy behavior is actually caused. So
    the patch just makes sure that max_to_defrag ends up having the right value
    rather than fixing a bug. I did run the xfstests suite to make sure that the
    code does not regress.
    
    Changelog: v1->v2:
    Provide a much descriptive commit message.
    Signed-off-by: default avatarChandan Rajendra <chandan@linux.vnet.ibm.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    070034bd
ioctl.c 129 KB