btrfs-progs: send: check if parent or clone sources are read-only
authorDavid Sterba <dsterba@suse.cz>
Fri, 6 Dec 2013 18:00:49 +0000 (19:00 +0100)
committerChris Mason <clm@fb.com>
Fri, 31 Jan 2014 16:22:13 +0000 (08:22 -0800)
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
cmds-send.c

index 302f5a89790adf9cf0bcbc80e8f2740942c3bbfa..85461d5b0283c35e27e1cf04579b2459f9bc7802 100644 (file)
@@ -504,6 +504,18 @@ int cmd_send(int argc, char **argv)
                                                "root_id for %s\n", subvol);
                                goto out;
                        }
+
+                       ret = is_subvol_ro(&send, subvol);
+                       if (ret < 0)
+                               goto out;
+                       if (!ret) {
+                               ret = -EINVAL;
+                               fprintf(stderr,
+                               "ERROR: cloned subvol %s is not read-only.\n",
+                                       subvol);
+                               goto out;
+                       }
+
                        add_clone_source(&send, root_id);
                        subvol_uuid_search_finit(&send.sus);
                        free(subvol);
@@ -532,6 +544,18 @@ int cmd_send(int argc, char **argv)
                                                "%s\n", optarg, strerror(-ret));
                                goto out;
                        }
+
+                       ret = is_subvol_ro(&send, snapshot_parent);
+                       if (ret < 0)
+                               goto out;
+                       if (!ret) {
+                               ret = -EINVAL;
+                               fprintf(stderr,
+                                       "ERROR: parent %s is not read-only.\n",
+                                       snapshot_parent);
+                               goto out;
+                       }
+
                        full_send = 0;
                        break;
                case 'i':