--- /dev/null
+#!/bin/bash -ex
+
+dir=`dirname $0`
+
+$dir/prepare.sh
+
+$dir/pri_nul.sh
+rm mnt/?/* || true
+
+$dir/rem_nul.sh
+rm mnt/?/* || true
+
+$dir/pri_pri.sh
+rm mnt/?/* || true
+
+$dir/rem_pri.sh
+rm mnt/?/* || true
+
+$dir/rem_rem.sh
+rm mnt/?/* || true
--- /dev/null
+#!/bin/sh
+
+# srcdn destdn targeti
+
+## pri auth null auth -
+## pri rep null auth -
+## rem auth null auth -
+## rem rep null auth -
+
+#/ pri auth null rep - dup of pr_na
+#/ pri rep null rep -
+#/ rem auth null rep - dup of rr_na
+#/ rem rep null rep -
+
+
+## pri auth pri auth -
+# pri rep pri auth -
+## rem auth pri auth -
+# rem rep pri auth -
+
+# pri auth pri rep -
+# pri rep pri rep -
+# rem auth pri rep -
+# rem rep pri rep -
+
+## pri auth rem auth auth
+# pri rep rem auth auth
+## rem auth rem auth auth
+# rem rep rem auth auth
+
+# pri auth rem rep auth
+# pri rep rem rep auth
+# rem auth rem rep auth
+# rem rep rem rep auth
+
+# pri auth rem auth rep
+# pri rep rem auth rep
+# rem auth rem auth rep
+# rem rep rem auth rep
+
+# pri auth rem rep rep
+# pri rep rem rep rep
+# rem auth rem rep rep
+# rem rep rem rep rep
+
+
+types of operations
+
+pri nul
+ srcdn=destdn
+ diff
+
+rem nul
+ srci=srcdn=destdn
+ srci=srcdn
+ srcdn=destdn
+ srci=destdn
+ all different
+
+pri pri
+ srcdn=destdn
+ different
+
+rem pri
+ srci=srcdn=destdn
+ srci=srcdn
+ srcdn=destdn
+ srci=destdn
+ all different
+
+pri rem
+ srcdn=destdn=desti
+ srcdn=destdn
+ destdn=desti
+ srcdn=desti
+ all different
+
+rem rem
+ srci=srcdn=destdn=desti
+ srci=srcdn=destdn
+ srci=srcdn=desti
+ srci=destdn=desti
+ srcdni=destdn=desti
+ srci=srcdn destdn=desti
+ srci=destdn srcdn=desti
+ srci=desti srcdn=destdn
+ srci=srcdn
+ srci=destdn
+ srci=desti
+ srcdn=destdn
+ srcdn=desti
+ destdn=desti
+ all different
+
+
+
+
+
+
+
+
+
+p n same
+r n same
+p n diff
+r n diff
+
+p p same
+r p same
+
+p r
--- /dev/null
+#!/bin/sh -ex
+
+./ceph mds tell 0 injectargs '--mds-bal-interval 0'
+./ceph mds tell 1 injectargs '--mds-bal-interval 0'
+./ceph mds tell 2 injectargs '--mds-bal-interval 0'
+./ceph mds tell 3 injectargs '--mds-bal-interval 0'
+#./ceph mds tell 4 injectargs '--mds-bal-interval 0'
+
+mkdir -p mnt/a/a
+mkdir -p mnt/b/b
+mkdir -p mnt/c/c
+mkdir -p mnt/d/d
+
+./ceph mds tell 0 export_dir /b 1
+./ceph mds tell 0 export_dir /c 2
+./ceph mds tell 0 export_dir /d 3
+sleep 5
+
--- /dev/null
+#!/bin/sh -ex
+
+touch mnt/a/file1
+touch mnt/a/file2
+
+# srcdn=destdn
+mv mnt/a/file1 mnt/a/file1.renamed
+
+# different
+mv mnt/a/file2 mnt/b
+
--- /dev/null
+#!/bin/sh -ex
+
+touch mnt/a/file1
+touch mnt/a/file2
+touch mnt/a/file3
+touch mnt/b/file4
+
+# srcdn=destdn
+mv mnt/a/file1 mnt/a/file2
+
+# different (srcdn != destdn)
+mv mnt/a/file3 mnt/b/file4
+
--- /dev/null
+#!/bin/sh -ex
+
+dotest() {
+ src=$1
+ desti=$2
+ destdn=$3
+ n=$4
+
+ touch mnt/$src/src$n
+ touch mnt/$desti/desti$n
+ ln mnt/$desti/desti$n mnt/$destdn/destdn$n
+
+ mv mnt/$src/src$n mnt/$destdn/destdn$n
+}
+
+
+# srcdn=destdn=desti
+dotest 'a' 'a' 'a' 1
+
+# destdn=desti
+dotest 'b' 'a' 'a' 2
+
+# srcdn=destdn
+dotest 'a' 'b' 'a' 3
+
+# srcdn=desti
+dotest 'a' 'a' 'b' 4
+
+# all different
+dotest 'a' 'b' 'c' 5
+
--- /dev/null
+#!/bin/sh -ex
+
+dotest() {
+ srci=$1
+ srcdn=$2
+ dest=$3
+ n=$4
+
+ touch mnt/$srci/srci$n
+ ln mnt/$srci/srci$n mnt/$srcdn/srcdn$n
+
+ mv mnt/$srcdn/srcdn$n mnt/$dest/dest$n
+}
+
+# srci=srcdn=destdn
+dotest 'a' 'a' 'a' 1
+
+# srcdn=destdn
+dotest 'b' 'a' 'a' 2
+
+# srci=destdn
+dotest 'a' 'b' 'a' 3
+
+# srci=srcdn
+dotest 'a' 'a' 'b' 4
+
+# all different
+dotest 'a' 'b' 'c' 5
+
--- /dev/null
+#!/bin/sh -ex
+
+dotest() {
+ srci=$1
+ srcdn=$2
+ dest=$3
+ n=$4
+
+ touch mnt/$srci/srci$n
+ ln mnt/$srci/srci$n mnt/$srcdn/srcdn$n
+ touch mnt/$dest/dest$n
+
+ mv mnt/$srcdn/srcdn$n mnt/$dest/dest$n
+}
+
+# srci=srcdn=destdn
+dotest 'a' 'a' 'a' 1
+
+# srcdn=destdn
+dotest 'b' 'a' 'a' 2
+
+# srci=destdn
+dotest 'a' 'b' 'a' 3
+
+# srci=srcdn
+dotest 'a' 'a' 'b' 4
+
+# all different
+dotest 'a' 'b' 'c' 5
--- /dev/null
+#!/bin/sh -ex
+
+dotest() {
+ srci=$1
+ srcdn=$2
+ desti=$3
+ destdn=$4
+ n=$5
+
+ touch mnt/$srci/srci$n
+ ln mnt/$srci/srci$n mnt/$srcdn/srcdn$n
+ touch mnt/$desti/desti$n
+ ln mnt/$desti/desti$n mnt/$destdn/destdn$n
+
+ mv mnt/$srcdn/srcdn$n mnt/$destdn/destdn$n
+}
+
+# srci=srcdn=destdn=desti
+dotest 'a' 'a' 'a' 'a' 1
+
+# srcdn=destdn=desti
+dotest 'b' 'a' 'a' 'a' 2
+
+# srci=destdn=desti
+dotest 'a' 'b' 'a' 'a' 3
+
+# srci=srcdn=destdn
+dotest 'a' 'a' 'b' 'a' 4
+
+# srci=srcdn=desti
+dotest 'a' 'a' 'a' 'b' 5
+
+# srci=srcdn destdn=desti
+dotest 'a' 'a' 'b' 'b' 6
+
+# srci=destdn srcdn=desti
+dotest 'a' 'b' 'b' 'a' 7
+
+# srci=desti srcdn=destdn
+dotest 'a' 'b' 'a' 'b' 8
+
+# srci=srcdn
+dotest 'a' 'a' 'b' 'c' 9
+
+# srci=desti
+dotest 'a' 'b' 'a' 'c' 10
+
+# srci=destdn
+dotest 'a' 'b' 'c' 'a' 11
+
+# srcdn=desti
+dotest 'a' 'b' 'b' 'c' 12
+
+# srcdn=destdn
+dotest 'a' 'b' 'c' 'b' 13
+
+# destdn=desti
+dotest 'a' 'b' 'c' 'c' 14
+
+# all different
+dotest 'a' 'b' 'c' 'd' 15