From 2b3b68a2f09670c301703dacbb101ab3ebdb98bb Mon Sep 17 00:00:00 2001 From: David Sterba Date: Fri, 6 Dec 2013 19:00:49 +0100 Subject: btrfs-progs: send: check if parent or clone sources are read-only Signed-off-by: David Sterba Signed-off-by: Chris Mason --- cmds-send.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'cmds-send.c') diff --git a/cmds-send.c b/cmds-send.c index 302f5a89..85461d5b 100644 --- a/cmds-send.c +++ b/cmds-send.c @@ -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': -- cgit v1.2.3