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