Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / qa / btrfs / test_rmdir_async_snap.c
1 #include <stdlib.h>
2 #include <unistd.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <fcntl.h>
6 #include <errno.h>
7 #include <stdio.h>
8 #include <sys/ioctl.h>
9 #include <string.h>
10
11 #include <linux/ioctl.h>
12 #include <linux/types.h>
13 #include "../../src/os/btrfs_ioctl.h"
14
15 struct btrfs_ioctl_vol_args_v2 va;
16 struct btrfs_ioctl_vol_args vold;
17
18 int main(int argc, char **argv)
19 {
20         int num = 1000;
21         int i, r, fd;
22         char buf[30];
23
24         if (argc > 1)
25                 num = atoi(argv[1]);
26         printf("will do %d iterations\n", num);
27         
28         fd = open(".", O_RDONLY);
29         vold.fd = 0;
30         strcpy(vold.name, "current");
31         r = ioctl(fd, BTRFS_IOC_SUBVOL_CREATE, (unsigned long int)&vold);
32         printf("create current ioctl got %d\n", r ? errno:0);
33         if (r)
34                 return 1;
35
36         for (i=0; i<num; i++) {
37                 sprintf(buf, "current/dir.%d", i);
38                 r = mkdir(buf, 0755);
39                 printf("mkdir got %d\n", r ? errno:0);
40                 if (r)
41                         return 1;
42         }
43
44         va.fd = open("current", O_RDONLY);
45         va.flags = BTRFS_SUBVOL_CREATE_ASYNC;
46         for (i=0; i<num; i++) {
47                 system("/bin/cp /boot/vmlinuz-3.2.0-ceph-00142-g9e98323 current/foo");
48                 sprintf(buf, "current/dir.%d", i);
49                 r = rmdir(buf);
50                 printf("rmdir got %d\n", r ? errno:0);
51                 if (r)
52                         return 1;
53
54                 if (i % 10) continue;
55                 sprintf(va.name, "snap.%d", i);
56                 r = ioctl(fd, BTRFS_IOC_SNAP_CREATE_V2, (unsigned long long)&va);
57                 printf("ioctl got %d\n", r ? errno:0);
58                 if (r)
59                         return 1;
60         }
61         return 0;
62 }