4 if "$@"; then return 1; else return 0; fi
12 setfattr
-n ceph.dir.subvolume
-v 1 group
/subvol1
15 mv group
/subvol1 group
/subvol2
17 # move file out of the subvolume
18 touch group
/subvol
2/file1
19 expect_failure python3
-c "import os; os.rename('group/subvol2/file1', 'group/file1')"
20 # move file into the subvolume
22 expect_failure python3
-c "import os; os.rename('group/file2', 'group/subvol2/file2')"
24 # create hardlink within subvolume
25 ln group
/subvol
2/file1 group
/subvol
2/file1_
27 # create hardlink out of subvolume
28 expect_failure
ln group
/subvol
2/file1 group
/file1_
29 expect_failure
ln group
/file2 group
/subvol
1/file2_
31 # create snapshot at subvolume root
32 mkdir group
/subvol
2/.snap
/s1
34 # create snapshot at descendent dir of subvolume
35 mkdir group
/subvol
2/dir
36 expect_failure mkdir group
/subvol
2/dir
/.snap
/s2
39 setfattr
-n ceph.dir.subvolume
-v 1 group
/subvol3
41 # move file across subvolumes
42 expect_failure python3
-c "import os; os.rename('group/subvol2/file1', 'group/subvol3/file1')"
44 # create hardlink across subvolumes
45 expect_failure
ln group
/subvol
2/file1 group
/subvol
3/file1
47 # create subvolume inside existing subvolume
48 expect_failure setfattr
-n ceph.dir.subvolume
-v 1 group
/subvol
2/dir
50 # clear subvolume flag
51 setfattr
-n ceph.dir.subvolume
-v 0 group
/subvol2
52 mkdir group
/subvol
2/dir
/.snap
/s2
54 # parent subvolume override child subvolume
55 setfattr
-n ceph.dir.subvolume
-v 1 group
/subvol
2/dir
56 setfattr
-n ceph.dir.subvolume
-v 1 group
/subvol2
57 expect_failure mkdir group
/subvol
2/dir
/.snap
/s3
59 rmdir group
/subvol
2/.snap
/s1
60 rmdir group
/subvol
2/dir
/.snap
/s2