11 #include <linux/ioctl.h>
12 #include <linux/types.h>
13 #include "../../src/os/btrfs_ioctl.h"
15 struct btrfs_ioctl_vol_args_v2 va;
16 struct btrfs_ioctl_vol_args vold;
19 void check_return(int r)
22 printf("********* failed with %d %s ********\n", errno, strerror(errno));
27 int main(int argc, char **argv)
33 printf("will do %d iterations\n", num);
35 int cwd = open(".", O_RDONLY);
36 printf("cwd = %d\n", cwd);
38 if (rand() % 10 == 0) {
41 printf("sync starting\n");
42 r = ioctl(cwd, BTRFS_IOC_START_SYNC, &transid);
44 printf("sync started, transid %lld, waiting\n", transid);
45 r = ioctl(cwd, BTRFS_IOC_WAIT_SYNC, &transid);
47 printf("sync finished\n");
53 sprintf(va.name, "test.%d", i);
55 int r = stat(va.name, &st);
57 if (rand() % 3 == 0) {
58 printf("snap create (sync) %s\n", va.name);
60 r = ioctl(cwd, BTRFS_IOC_SNAP_CREATE_V2, &va);
63 printf("snap create (async) %s\n", va.name);
64 va.flags = BTRFS_SUBVOL_CREATE_ASYNC;
65 r = ioctl(cwd, BTRFS_IOC_SNAP_CREATE_V2, &va);
67 printf("snap created, transid %lld\n", va.transid);
68 if (rand() % 2 == 0) {
69 printf("waiting for async snap create\n");
70 r = ioctl(cwd, BTRFS_IOC_WAIT_SYNC, &va.transid);
75 printf("snap remove %s\n", va.name);
77 strcpy(vold.name, va.name);
78 r = ioctl(cwd, BTRFS_IOC_SNAP_DESTROY, &vold);