Re: [PATCH] Btrfs: send, allow clone operations within the same file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Oct 30, 2019 at 12:23:11PM +0000, fdmanana@xxxxxxxxxx wrote:
> From: Filipe Manana <fdmanana@xxxxxxxx>
> 
> For send we currently skip clone operations when the source and destination
> files are the same. This is so because clone didn't support this case in
> its early days, but support for it was added back in May 2013 by commit
> a96fbc72884fcb ("Btrfs: allow file data clone within a file"). This change
> adds support for it.
> 
> Example:
> 
>   $ mkfs.btrfs -f /dev/sdd
>   $ mount /dev/sdd /mnt/sdd
> 
>   $ xfs_io -f -c "pwrite -S 0xab -b 64K 0 64K" /mnt/sdd/foobar
>   $ xfs_io -c "reflink /mnt/sdd/foobar 0 64K 64K" /mnt/sdd/foobar
> 
>   $ btrfs subvolume snapshot -r /mnt/sdd /mnt/sdd/snap
> 
>   $ mkfs.btrfs -f /dev/sde
>   $ mount /dev/sde /mnt/sde
> 
>   $ btrfs send /mnt/sdd/snap | btrfs receive /mnt/sde
> 
> Without this change file foobar at the destination has a single 128Kb
> extent:
> 
>   $ filefrag -v /mnt/sde/snap/foobar
>   Filesystem type is: 9123683e
>   File size of /mnt/sde/snap/foobar is 131072 (32 blocks of 4096 bytes)
>    ext:     logical_offset:        physical_offset: length:   expected: flags:
>      0:        0..      31:          0..        31:     32:             last,unknown_loc,delalloc,eof
>   /mnt/sde/snap/foobar: 1 extent found
> 
> With this we get a single 64Kb extent that is shared at file offsets 0
> and 64K, just like in the source filesystem:
> 
>   $ filefrag -v /mnt/sde/snap/foobar
>   Filesystem type is: 9123683e
>   File size of /mnt/sde/snap/foobar is 131072 (32 blocks of 4096 bytes)
>    ext:     logical_offset:        physical_offset: length:   expected: flags:
>      0:        0..      15:       3328..      3343:     16:             shared
>      1:       16..      31:       3328..      3343:     16:       3344: last,shared,eof
>   /mnt/sde/snap/foobar: 2 extents found
> 
> Signed-off-by: Filipe Manana <fdmanana@xxxxxxxx>

Reviewed-by: Josef Bacik <josef@xxxxxxxxxxxxxx>

Thanks,

Josef



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux