3 if ! id -u | grep -q '^0$'; then
4 echo "not root, re-running self via sudo"
5 sudo PATH=$PATH TYPE=$TYPE $0
12 if "$@"; then return 1; else return 0; fi
15 COT=ceph-objectstore-tool
16 DATA=store_test_fuse_dir
17 [ -z "$TYPE" ] && TYPE=bluestore
18 MNT=store_test_fuse_mnt
23 test -d $MNT && fusermount -u $MNT || true
27 export CEPH_ARGS=--enable_experimental_unrecoverable_data_corrupting_features=bluestore
29 $COT --op mkfs --data-path $DATA --type $TYPE
30 $COT --op fuse --data-path $DATA --mountpoint $MNT &
32 while ! test -e $MNT/type ; do
33 echo waiting for $MNT/type to appear
43 test -e $MNT/meta/bitwise_hash_start
45 test -d $MNT/meta/by_bitwise_hash
48 mkdir $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#
49 test -e $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
50 test -d $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr
51 test -d $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap
52 test -e $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/bitwise_hash
53 test -e $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap_header
56 echo omap header > $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap_header
57 grep -q omap $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap_header
60 echo value a > $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap/keya
61 echo value b > $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap/keyb
62 ls $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap | grep -c key | grep -q 2
63 grep 'value a' $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap/keya
64 grep 'value b' $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap/keyb
65 rm $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap/keya
66 test ! -e $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap/keya
67 rm $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap/keyb
68 test ! -e $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/omap/keyb
71 echo value a > $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr/keya
72 echo value b > $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr/keyb
73 ls $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr | grep -c key | grep -q 2
74 grep 'value a' $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr/keya
75 grep 'value b' $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr/keyb
76 rm $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr/keya
77 test ! -e $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr/keya
78 rm $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr/keyb
79 test ! -e $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/attr/keyb
82 test ! -s $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
83 echo asdfasdfasdf > $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
84 test -s $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
85 grep -q asdfasdfasdf $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
86 truncate --size 4 $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
87 stat --format=%s $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data | grep -q ^4$
88 expect_false grep -q asdfasdfasdf $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
89 rm $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
90 test ! -s $MNT/meta/all/#-1:7b3f43c4:::osd_superblock:0#/data
93 # create pg collection
94 mkdir --mode 0003 $MNT/0.0_head
95 grep -q 00000000 $MNT/0.0_head/bitwise_hash_start
96 if [ "$TYPE" = "bluestore" ]; then
97 cat $MNT/0.0_head/bitwise_hash_bits
98 grep -q 3 $MNT/0.0_head/bitwise_hash_bits
99 grep -q 1fffffff $MNT/0.0_head/bitwise_hash_end
101 test -d $MNT/0.0_head/all
103 mkdir --mode 0003 $MNT/0.1_head
104 grep -q 80000000 $MNT/0.1_head/bitwise_hash_start
105 if [ "$TYPE" = "bluestore" ]; then
106 grep -q 3 $MNT/0.1_head/bitwise_hash_bits
107 grep -q 9fffffff $MNT/0.1_head/bitwise_hash_end
111 mkdir $MNT/0.0_head/all/#0:00000000::::head#/
112 mkdir $MNT/0.0_head/all/#0:10000000:::foo:head#/
114 # verify pg bounds check
115 if [ "$TYPE" = "bluestore" ]; then
116 expect_false mkdir $MNT/0.0_head/all/#0:20000000:::bar:head#/
119 # remove a collection
120 expect_false rmdir $MNT/0.0_head
121 rmdir $MNT/0.0_head/all/#0:10000000:::foo:head#/
122 rmdir $MNT/0.0_head/all/#0:00000000::::head#/