+test_300m() {
+ [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+ skip "Need MDS version at least 2.7.55" && return
+ [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ [ $MDSCOUNT -ge 2 ] && skip "Only for single MDT" && return
+
+ mkdir -p $DIR/$tdir/striped_dir
+ $LFS setdirstripe -D -c 1 $DIR/$tdir/striped_dir ||
+ error "set default stripes dir error"
+
+ mkdir $DIR/$tdir/striped_dir/a || error "mkdir a fails"
+
+ stripe_count=$($LFS getdirstripe -c $DIR/$tdir/striped_dir/a)
+ [ $stripe_count -eq 0 ] ||
+ error "expect 0 get $stripe_count for a"
+
+ $LFS setdirstripe -D -c 2 $DIR/$tdir/striped_dir ||
+ error "set default stripes dir error"
+
+ mkdir $DIR/$tdir/striped_dir/b || error "mkdir b fails"
+
+ stripe_count=$($LFS getdirstripe -c $DIR/$tdir/striped_dir/b)
+ [ $stripe_count -eq 0 ] ||
+ error "expect 0 get $stripe_count for b"
+
+ $LFS setdirstripe -D -c1 -i2 $DIR/$tdir/striped_dir ||
+ error "set default stripes dir error"
+
+ mkdir $DIR/$tdir/striped_dir/c &&
+ error "default stripe_index is invalid, mkdir c should fails"
+
+ rm -rf $DIR/$tdir || error "rmdir fails"
+}
+run_test 300m "setstriped directory on single MDT FS"
+
+cleanup_300n() {
+ local list=$(comma_list $(mdts_nodes))
+
+ trap 0
+ do_nodes $list $LCTL set_param -n mdt.*.enable_remote_dir_gid=0
+}
+
+test_300n() {
+ [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+ skip "Need MDS version at least 2.7.55" && return
+ [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ local stripe_index
+ local list=$(comma_list $(mdts_nodes))
+
+ trap cleanup_300n RETURN EXIT
+ mkdir -p $DIR/$tdir
+ chmod 777 $DIR/$tdir
+ $RUNAS $LFS setdirstripe -i0 -c$MDSCOUNT \
+ $DIR/$tdir/striped_dir > /dev/null 2>&1 &&
+ error "create striped dir succeeds with gid=0"
+
+ do_nodes $list $LCTL set_param -n mdt.*.enable_remote_dir_gid=-1
+ $RUNAS $LFS setdirstripe -i0 -c$MDSCOUNT $DIR/$tdir/striped_dir ||
+ error "create striped dir fails with gid=-1"
+
+ do_nodes $list $LCTL set_param -n mdt.*.enable_remote_dir_gid=0
+ $RUNAS $LFS setdirstripe -i 1 -c$MDSCOUNT -D \
+ $DIR/$tdir/striped_dir > /dev/null 2>&1 &&
+ error "set default striped dir succeeds with gid=0"
+
+
+ do_nodes $list $LCTL set_param -n mdt.*.enable_remote_dir_gid=-1
+ $RUNAS $LFS setdirstripe -i 1 -c$MDSCOUNT -D $DIR/$tdir/striped_dir ||
+ error "set default striped dir fails with gid=-1"
+
+
+ do_nodes $list $LCTL set_param -n mdt.*.enable_remote_dir_gid=0
+ $RUNAS mkdir $DIR/$tdir/striped_dir/test_dir ||
+ error "create test_dir fails"
+ $RUNAS mkdir $DIR/$tdir/striped_dir/test_dir1 ||
+ error "create test_dir1 fails"
+ $RUNAS mkdir $DIR/$tdir/striped_dir/test_dir2 ||
+ error "create test_dir2 fails"
+ cleanup_300n
+}
+run_test 300n "non-root user to create dir under striped dir with default EA"
+
+test_300o() {
+ [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+ skip "Need MDS version at least 2.7.55" && return
+ [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ local numfree1
+ local numfree2
+
+ mkdir -p $DIR/$tdir
+
+ numfree1=$(lctl get_param -n mdc.*MDT0000*.filesfree)
+ numfree2=$(lctl get_param -n mdc.*MDT0001*.filesfree)
+ if [ $numfree1 -lt 66000 -o $numfree2 -lt 66000 ]; then
+ skip "not enough free inodes $numfree1 $numfree2"
+ return
+ fi
+
+ numfree1=$(lctl get_param -n mdc.*MDT0000-mdc-*.kbytesfree)
+ numfree2=$(lctl get_param -n mdc.*MDT0001-mdc-*.kbytesfree)
+ if [ $numfree1 -lt 300000 -o $numfree2 -lt 300000 ]; then
+ skip "not enough free space $numfree1 $numfree2"
+ return
+ fi
+
+ $LFS setdirstripe -c2 $DIR/$tdir/striped_dir ||
+ error "setdirstripe fails"
+
+ createmany -d $DIR/$tdir/striped_dir/d 131000 ||
+ error "create dirs fails"
+
+ $LCTL set_param ldlm.namespaces.*mdc-*.lru_size=0
+ ls $DIR/$tdir/striped_dir > /dev/null ||
+ error "ls striped dir fails"
+ unlinkmany -d $DIR/$tdir/striped_dir/d 131000 ||
+ error "unlink big striped dir fails"
+}
+run_test 300o "unlink big sub stripe(> 65000 subdirs)"
+
+test_300p() {
+ [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+
+ mkdir -p $DIR/$tdir
+
+ #define OBD_FAIL_OUT_ENOSPC 0x1704
+ do_facet mds2 lctl set_param fail_loc=0x80001704
+ $LFS setdirstripe -c2 $DIR/$tdir/bad_striped_dir > /dev/null 2>&1 &&
+ error "create striped directory should fail"
+
+ [ -e $DIR/$tdir/bad_striped_dir ] && error "striped dir exists"
+ true
+}
+run_test 300p "create striped directory without space"
+