diff options
author | David Sterba <dsterba@suse.cz> | 2013-12-06 19:00:49 +0100 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-01-31 08:22:13 -0800 |
commit | 2b3b68a2f09670c301703dacbb101ab3ebdb98bb (patch) | |
tree | f7744395f55299577d9e83d9b4bea5e215226b12 /cmds-send.c | |
parent | 8d68cb2bad0e8e7951811e0641188c447165141f (diff) | |
download | btrfs-progs-2b3b68a2f09670c301703dacbb101ab3ebdb98bb.tar.gz btrfs-progs-2b3b68a2f09670c301703dacbb101ab3ebdb98bb.tar.bz2 btrfs-progs-2b3b68a2f09670c301703dacbb101ab3ebdb98bb.zip |
btrfs-progs: send: check if parent or clone sources are read-only
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'cmds-send.c')
-rw-r--r-- | cmds-send.c | 24 |
1 files changed, 24 insertions, 0 deletions
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': |