Btrfs-progs: try harder to make btrfs receive successfully
authorWang Shilong <wangsl.fnst@cn.fujitsu.com>
Wed, 13 Nov 2013 09:25:46 +0000 (17:25 +0800)
committerChris Mason <clm@fb.com>
Fri, 31 Jan 2014 16:22:02 +0000 (08:22 -0800)
commit67d3c3c0d3505377e6468849b086aefc69ae5411
tree9a157f6ea32d581a98c43b492898dfaa311d803b
parent72f1835ae4ed46c56d47fe10e9189708e7704246
Btrfs-progs: try harder to make btrfs receive successfully

Steps to reproduce:
# mkfs.btrfs -f <dev>
# mount <dev> <mnt>
# mkdir <mnt>/backup
# btrfs sub create <mnt>/subv
# btrfs sub snapshot -r <mnt>/subv <mnt>/snap1
# btrfs sub snapshot -r <mnt>/subv <mnt>/snap2
# btrfs send <mnt>/snap2 -p <mnt>/snap1 -f sent_file
# btrfs receive -f sent_file <mnt>/backup

Above steps will make btrfs receive fails with "ERROR: can not find
parent subvolume", this is because we try to find parent subvolume by
RECEIVED_SUBVOL_KEY,and it will return ENOENT if parent snapshot has not
been sent or it has been deleted. Actually, we can try harder to find
whether parent subvolume exists by searching uuid key.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
cmds-receive.c