• Miao Xie's avatar
    Btrfs: fix wrong lock range and write size in check_can_nocow() · c933956d
    Miao Xie authored
    The write range may not be sector-aligned, for example:
    
           |--------|--------|	<- write range, sector-unaligned, size: 2blocks
      |--------|--------|--------|  <- correct lock range, size: 3blocks
    
    But according to the old code, we used the size of write range to calculate
    the lock range directly, not considered the offset, we would get a wrong lock
    range:
    
           |--------|--------|	<- write range, sector-unaligned, size: 2blocks
      |--------|--------|		<- wrong lock range, size: 2blocks
    
    And besides that, the old code also had the same problem when calculating
    the real write size. Correct them.
    Signed-off-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
    Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
    c933956d
file.c 68.5 KB