btrfs-progs: send: fix handling of multiple snapshots (-p option)
authorTsutomu Itoh <t-itoh@jp.fujitsu.com>
Wed, 19 Oct 2016 02:35:03 +0000 (11:35 +0900)
committerDavid Sterba <dsterba@suse.com>
Wed, 9 Nov 2016 12:13:47 +0000 (13:13 +0100)
We cannot send multiple snapshots at once by -p option.

[before]
# btrfs send -f /tmp/data0 -p Snap0 Snap[12]
At subvol Snap1
At subvol Snap2
ERROR: parent determination failed for 0
#

[after]
# btrfs send -f /tmp/data0 -p Snap0 Snap[12]
At subvol Snap1
At subvol Snap2
#

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
cmds-send.c

index dfdfe01..2a8a697 100644 (file)
@@ -650,7 +650,7 @@ int cmd_send(int argc, char **argv)
                        goto out;
                }
 
-               if (!full_send && !parent_root_id) {
+               if (!full_send && root_id) {
                        ret = find_good_parent(&send, root_id, &parent_root_id);
                        if (ret < 0) {
                                error("parent determination failed for %lld",
@@ -673,7 +673,7 @@ int cmd_send(int argc, char **argv)
                if (ret < 0)
                        goto out;
 
-               if (!full_send) {
+               if (!full_send && root_id) {
                        /* done with this subvol, so add it to the clone sources */
                        ret = add_clone_source(&send, root_id);
                        if (ret < 0) {
@@ -681,8 +681,6 @@ int cmd_send(int argc, char **argv)
                                goto out;
                        }
                }
-
-               parent_root_id = 0;
        }
 
        ret = 0;