]> git.proxmox.com Git - ceph.git/blob - ceph/qa/workunits/fs/misc/subvolume.sh
buildsys: change download over to reef release
[ceph.git] / ceph / qa / workunits / fs / misc / subvolume.sh
1 #!/bin/sh -x
2
3 expect_failure() {
4 if "$@"; then return 1; else return 0; fi
5 }
6
7 set -e
8
9 mkdir group
10 mkdir group/subvol1
11
12 setfattr -n ceph.dir.subvolume -v 1 group/subvol1
13
14 # rename subvolume
15 mv group/subvol1 group/subvol2
16
17 # move file out of the subvolume
18 touch group/subvol2/file1
19 expect_failure python3 -c "import os; os.rename('group/subvol2/file1', 'group/file1')"
20 # move file into the subvolume
21 touch group/file2
22 expect_failure python3 -c "import os; os.rename('group/file2', 'group/subvol2/file2')"
23
24 # create hardlink within subvolume
25 ln group/subvol2/file1 group/subvol2/file1_
26
27 # create hardlink out of subvolume
28 expect_failure ln group/subvol2/file1 group/file1_
29 expect_failure ln group/file2 group/subvol1/file2_
30
31 # create snapshot at subvolume root
32 mkdir group/subvol2/.snap/s1
33
34 # create snapshot at descendent dir of subvolume
35 mkdir group/subvol2/dir
36 expect_failure mkdir group/subvol2/dir/.snap/s2
37
38 mkdir group/subvol3
39 setfattr -n ceph.dir.subvolume -v 1 group/subvol3
40
41 # move file across subvolumes
42 expect_failure python3 -c "import os; os.rename('group/subvol2/file1', 'group/subvol3/file1')"
43
44 # create hardlink across subvolumes
45 expect_failure ln group/subvol2/file1 group/subvol3/file1
46
47 # create subvolume inside existing subvolume
48 expect_failure setfattr -n ceph.dir.subvolume -v 1 group/subvol2/dir
49
50 # clear subvolume flag
51 setfattr -n ceph.dir.subvolume -v 0 group/subvol2
52 mkdir group/subvol2/dir/.snap/s2
53
54 # parent subvolume override child subvolume
55 setfattr -n ceph.dir.subvolume -v 1 group/subvol2/dir
56 setfattr -n ceph.dir.subvolume -v 1 group/subvol2
57 expect_failure mkdir group/subvol2/dir/.snap/s3
58
59 rmdir group/subvol2/.snap/s1
60 rmdir group/subvol2/dir/.snap/s2
61 rm -rf group
62
63 echo OK