Message ID | 1407462426-6420-2-git-send-email-fdmanana@suse.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
(2014/08/08 10:47), Filipe Manana wrote: > When cloning a file that consists of an inline extent, we were creating > an extent map that represents a non-existing trailing hole starting at a > file offset that isn't a multiple of the sector size. This happened because > when processing an inline extent we weren't aligning the extent's length to > the sector size, and therefore incorrectly treating the range > [inline_extent_length; sector_size[ as a hole. > > Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com> > --- > fs/btrfs/ioctl.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c > index d490abd..6e3a0d1 100644 > --- a/fs/btrfs/ioctl.c > +++ b/fs/btrfs/ioctl.c > @@ -3494,7 +3494,8 @@ process_slot: > btrfs_mark_buffer_dirty(leaf); > btrfs_release_path(path); > > - last_dest_end = new_key.offset + datal; > + last_dest_end = ALIGN(new_key.offset + datal, > + root->sectorsize); > ret = clone_finish_inode_update(trans, inode, > last_dest_end, > destoff, olen); > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index d490abd..6e3a0d1 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -3494,7 +3494,8 @@ process_slot: btrfs_mark_buffer_dirty(leaf); btrfs_release_path(path); - last_dest_end = new_key.offset + datal; + last_dest_end = ALIGN(new_key.offset + datal, + root->sectorsize); ret = clone_finish_inode_update(trans, inode, last_dest_end, destoff, olen);
When cloning a file that consists of an inline extent, we were creating an extent map that represents a non-existing trailing hole starting at a file offset that isn't a multiple of the sector size. This happened because when processing an inline extent we weren't aligning the extent's length to the sector size, and therefore incorrectly treating the range [inline_extent_length; sector_size[ as a hole. Signed-off-by: Filipe Manana <fdmanana@suse.com> --- fs/btrfs/ioctl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)