• Alexander Block's avatar
    Btrfs: introduce subvol uuids and times · 8ea05e3a
    Alexander Block authored
    This patch introduces uuids for subvolumes. Each
    subvolume has it's own uuid. In case it was snapshotted,
    it also contains parent_uuid. In case it was received,
    it also contains received_uuid.
    
    It also introduces subvolume ctime/otime/stime/rtime. The
    first two are comparable to the times found in inodes. otime
    is the origin/creation time and ctime is the change time.
    stime/rtime are only valid on received subvolumes.
    stime is the time of the subvolume when it was
    sent. rtime is the time of the subvolume when it was
    received.
    
    Additionally to the times, we have a transid for each
    time. They are updated at the same place as the times.
    
    btrfs receive uses stransid and rtransid to find out
    if a received subvolume changed in the meantime.
    
    If an older kernel mounts a filesystem with the
    extented fields, all fields become invalid. The next
    mount with a new kernel will detect this and reset the
    fields.
    Signed-off-by: default avatarAlexander Block <ablock84@googlemail.com>
    Reviewed-by: default avatarDavid Sterba <dave@jikos.cz>
    Reviewed-by: default avatarArne Jansen <sensille@gmx.net>
    Reviewed-by: default avatarJan Schmidt <list.btrfs@jan-o-sch.net>
    Reviewed-by: default avatarAlex Lyakas <alex.bolshoy.btrfs@gmail.com>
    8ea05e3a
transaction.c 41.2 KB