On 07/06/2012 02:45 PM, Alexander Block wrote:
> On Fri, Jul 6, 2012 at 2:03 PM, Goffredo Baroncelli <kreij...@libero.it> 
> wrote:
>> On 07/06/2012 01:55 PM, Chris Mason wrote:
>>> On Fri, Jul 06, 2012 at 02:51:43AM -0600, Alexander Block wrote:
>>>> On Fri, Jul 6, 2012 at 12:34 AM, Goffredo Baroncelli <kreij...@libero.it> 
>>>> wrote:
>>>>> On 07/05/2012 06:51 PM, Alexander Block wrote:
>>>>>> Hello all,
>>>>>>
>>>>>> in IRC we had a discussion on how we could solve sending live
>>>>>> subvolumes and how to send subvolumes without the need to
>>>>>> administrate/keep old snapshots for incremental sends. One of the
>>>>>> ideas was to introduce "sendshots", which are basically snapshots
>>>>>> where no refs are counted for file data. This means, that when file
>>>>>> data is changed in the sendshot origin, we do not consume extra space
>>>>>> for two copies of the data. We would only have the metadata
>>>>>> duplicated.
>>>>>>
>>>>>> For the initial btrfs send we could do this:
>>>>>> 1. Create a hidden read-only snapshot of the subvolume to send. Hidden
>>>>>> means that it's not referenced by any subvolume. It is however still a
>>>>>> normal snapshot (not a sendshot!). Hidden snapshots are not possible
>>>>>> atm so we would have to implement that. This step allows us to send
>>>>>> read-write subvolumes, because we have a freezed version of it.
>>>>>
>>>>> Why we should want/need an hidden snapshot ? We could put this kind of
>>>>> hidden snapshot under a directory dot-prefixed (like /.hidden-subvolumes)
>>>> That would have the problem that the user may modify the subvolume
>>>> in-between (by removing the ro flag). Or he could simple cd into it
>>>> and we would later fail to delete it.
>>>
>>> I prefer to make this more explicit.  We could add a hard-readonly flag
>>> that cannot be cleared.  Having the snapshot show in the FS lets the
>>> admin know what things are really using space.
> Yepp sounds like a better solution then hidden snapshots. Or, we could
> protect against RO flag changes while performing the send.
>>
>>
>> Me too, but I am guessing what should happens when the users try to read
>> an old data ? (I am talking about sendshot ). If I understood correctly
>> the old data isn't tracked by the sendshot.
> Two possible solutions that I see:
> 1. Hidden sendshots :P
> 2. Reading files from a sendshot will always give dummy data (e.g. all
> zero). But I really can't estimate how hard this is to implement.

>From an user point of view, this would be a nightmare. Two similar
filesystem with no obvious differences....

I suggest that the sendshot appears as empty read only subvolume. So all
the btrfs subvolumes semantic could be applied (btrfs subvolume delete,
btrfs sublume list, btrfs send, btrfs receive ) and the user cannot read
false data. We could mark this with a specific inode number:currently
all subvolume have inode number=256, we could use 255 or similar (I
don't know if this could raise some problem however ).

Otherwise we need to create a separate namespace for this kind of
subvolume (which could be a solution for other kinds of problems), for
example under /sys.

GB

>>
>> GB
> .
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to