From 902f699c388c62357881c69cd204f10fcaf521d6 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 29 Jun 2011 12:58:41 -0700 Subject: [PATCH] qa: add clone_range tool Signed-off-by: Sage Weil --- qa/Makefile | 2 +- qa/btrfs/.gitignore | 1 + qa/btrfs/clone_range.c | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 qa/btrfs/.gitignore create mode 100644 qa/btrfs/clone_range.c diff --git a/qa/Makefile b/qa/Makefile index 05dc834adbdb3..ad655b7e743cb 100644 --- a/qa/Makefile +++ b/qa/Makefile @@ -1,4 +1,4 @@ -DIRS= workunits +DIRS= workunits btrfs all: for d in $(DIRS) ; do ( cd $$d ; $(MAKE) all ) ; done diff --git a/qa/btrfs/.gitignore b/qa/btrfs/.gitignore new file mode 100644 index 0000000000000..23809b1905215 --- /dev/null +++ b/qa/btrfs/.gitignore @@ -0,0 +1 @@ +/clone_range diff --git a/qa/btrfs/clone_range.c b/qa/btrfs/clone_range.c new file mode 100644 index 0000000000000..0a88e16013104 --- /dev/null +++ b/qa/btrfs/clone_range.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include + +#include +#include "../../src/os/btrfs_ioctl.h" +#include +#include + +int main(int argc, char **argv) +{ + struct btrfs_ioctl_clone_range_args ca; + int dfd; + int r; + + if (argc < 6) { + printf("usage: %s \n", argv[0]); + exit(1); + } + + ca.src_fd = open(argv[1], O_RDONLY); + ca.src_offset = atoi(argv[2]); + ca.src_length = atoi(argv[3]); + dfd = open(argv[4], O_WRONLY|O_CREAT); + ca.dest_offset = atoi(argv[5]); + + r = ioctl(dfd, BTRFS_IOC_CLONE_RANGE, &ca); + printf("clone_range %s %lld %lld~%lld to %s %d %lld = %d %s\n", + argv[1], ca.src_fd, + ca.src_offset, ca.src_length, + argv[4], dfd, + ca.dest_offset, r, strerror(errno)); + return r; +} -- 2.39.5