btrfs-progs: use openat for process_clone in receive
authorEmil Karlson <jekarlson@gmail.com>
Thu, 21 May 2015 15:42:29 +0000 (18:42 +0300)
committerDavid Sterba <dsterba@suse.cz>
Tue, 26 May 2015 14:31:32 +0000 (16:31 +0200)
commit5d4f3ea9b41e7dd0812da1cdd7eb9049fe289066
tree48d28cb8157e48b75df521a7ad2f3dc91a13052c
parentb51cc1d32555082d02a68d946cbbed0983f82270
btrfs-progs: use openat for process_clone in receive

This will fix breakage, when doing chrooted receive with cloned paths
outside main subvolume.

Steps to reproduce:
 $ create subvolume
 $ create file
 $ snapshot to snap1
 $ delete file
 $ snapshot to snap2
 $ reflink file from snap1
 $ snapsthot to snap3

 $ send full snap1 | receive --chroot
 $ send incremental snap2 | receive --chroot
 $ send incremental snap3 | receive --chroot

The last step would fail with:

 Chroot to /mnt/recvdir
 At snapshot snap3
 ERROR: failed to open /recvdir/snap1/file. No such file or directory

Signed-off-by: Emil Karlson <jekarlson@gmail.com>
[added reproducer]
Signed-off-by: David Sterba <dsterba@suse.cz>
cmds-receive.c