btrfs-progs: send: fix handling of multiple snapshots
authorTsutomu Itoh <t-itoh@jp.fujitsu.com>
Thu, 24 Mar 2016 07:47:28 +0000 (16:47 +0900)
committerDavid Sterba <dsterba@suse.com>
Wed, 30 Mar 2016 14:26:13 +0000 (16:26 +0200)
We cannot send multiple snapshots at once.

[before fix]
# btrfs send ./snap[12] > snap12.data
At subvol ./snap1
At subvol ./snap2
ERROR: parent determination failed for 0
#

[after fix]
# btrfs send ./snap[12] > snap12.data
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 bbe16d8..bdf1c97 100644 (file)
@@ -673,15 +673,16 @@ int cmd_send(int argc, char **argv)
                if (ret < 0)
                        goto out;
 
-               /* done with this subvol, so add it to the clone sources */
-               ret = add_clone_source(&send, root_id);
-               if (ret < 0) {
-                       error("not enough memory");
-                       goto out;
+               if (!full_send) {
+                       /* done with this subvol, so add it to the clone sources */
+                       ret = add_clone_source(&send, root_id);
+                       if (ret < 0) {
+                               error("not enough memory");
+                               goto out;
+                       }
                }
 
                parent_root_id = 0;
-               full_send = 0;
        }
 
        ret = 0;