Re: [PATCH] Allow cross subvolume reflinks (2nd attempt)

From: Goffredo Baroncelli
Date: Wed Jun 20 2012 - 14:11:23 EST


On 06/20/2012 08:07 PM, Calvin Walton wrote:
> On Wed, 2012-06-20 at 19:27 +0200, Alexander Block wrote:
>> On Wed, Jun 20, 2012 at 7:18 PM, Goffredo Baroncelli <kreijack@xxxxxxxxx> wrote:
>>> Hi Alexander,
>>>
>>> On 06/20/2012 12:35 PM, Alexander Block wrote:
>>>> The patch also does proper vfs mount checks, so cross mount
>>>> point reflinks are not possible with this patch. It only allows cross
>>>> reflinks between two subvolumes which are in the same mount point.
>>>
>>> Thanks for working on that. What happens if two subvolumes of the same
>>> filesystem are mounted on two different places ?
>>>
>>> I usually do:
>>> mount -o subvol=__active /dev/sdX /
>>> mount -o subvol=. /dev/sdX /var/btrfs
>>>
>>> So two different subvolumes of the same filesystem (the one on /dev/sdX)
>>> are mounted on two different places.
>>>
>>> Is it possible to do
>>> cp --reflink /tmp/foo /var/btrfs/tmp/foo2
>> This will fail with -EXDEV. The patch explicitly forbids reflinks crossing vfs
>> mount boundaries.
>
> Which means that if I want to do a reflink copy between two separately
> mounted subvolumes, I will have to go and do a third mount with a common
> subvolume above those two, then do the reflink operation within this
> extra mount? This seems slightly impractical.
>
> Is it any extra code to enable doing cross-mount reflinks? Why was the
> decision made not to allow them?
>
> Is there some particular opposition to supporting cross-mount operations
> on multiple mounts of the same filesystem in general? (I'd love to have
> rename() work across bind mounts, for example...)

Yes please, could someone explain the reason behind this decision ? May
be there are valid reasons, I am asking only to know which ones ?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/