diff options
author | Josef Bacik <jbacik@fb.com> | 2015-06-04 23:17:25 +0200 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-06-12 22:20:38 +0200 |
commit | 37b8d27de5d0079e1ecef2711061048e13054ebe (patch) | |
tree | ca36f955398f3e3dc9f369bee28bbcc125d8b628 /fs/btrfs/ctree.h | |
parent | Btrfs: fix use-after-free in btrfs_replay_log (diff) | |
download | linux-37b8d27de5d0079e1ecef2711061048e13054ebe.tar.xz linux-37b8d27de5d0079e1ecef2711061048e13054ebe.zip |
Btrfs: use received_uuid of parent during send
Neil Horman pointed out a problem where if he did something like this
receive A
snap A B
change B
send -p A B
and then on another box do
recieve A
receive B
the receive B would fail because we use the UUID of A for the clone sources for
B. This makes sense most of the time because normally you are sending from the
original sources, not a received source. However when you use a recieved subvol
its UUID is going to be something completely different, so if you then try to
receive the diff on a different volume it won't find the UUID because the new A
will be something else. The only constant is the received uuid. So instead
check to see if we have received_uuid set on the root, and if so use that as the
clone source, as btrfs receive looks for matches either in received_uuid or
uuid. Thanks,
Reported-by: Neil Horman <nhorman@redhat.com>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Hugo Mills <hugo@carfax.org.uk>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/ctree.h')
0 files changed, 0 insertions, 0 deletions