+run_test 27Ca "check full striping across all OSTs"
+
+test_27Cb() {
+ [[ $($LCTL get_param mdc.*.import) =~ connect_flags.*overstriping ]] ||
+ skip "server does not support overstriping"
+ [[ $OSTCOUNT -ge $(($LOV_MAX_STRIPE_COUNT / 2)) ]] &&
+ skip_env "too many osts, skipping"
+
+ test_mkdir -p $DIR/$tdir
+ local setcount=$(($OSTCOUNT * 2))
+ [ $setcount -ge 160 ] || large_xattr_enabled ||
+ skip_env "ea_inode feature disabled"
+
+ $LFS setstripe -C $setcount $DIR/$tdir/$tfile ||
+ error "setstripe failed"
+
+ local count=$($LFS getstripe -c $DIR/$tdir/$tfile)
+ [ $count -eq $setcount ] ||
+ error "stripe count $count, should be $setcount"
+
+ $LFS getstripe $DIR/$tdir/$tfile 2>&1 | grep "overstriped" ||
+ error "overstriped should be set in pattern"
+
+ dd if=/dev/zero of=$DIR/$tdir/$tfile bs=1M count=4 conv=notrunc ||
+ error "dd failed"
+}
+run_test 27Cb "more stripes than OSTs with -C"
+
+test_27Cc() {
+ [[ $($LCTL get_param mdc.*.import) =~ connect_flags.*overstriping ]] ||
+ skip "server does not support overstriping"
+ [[ $OSTCOUNT -lt 2 ]] && skip_env "need > 1 OST"
+
+ test_mkdir -p $DIR/$tdir
+ local setcount=$(($OSTCOUNT - 1))
+
+ [ $setcount -ge 160 ] || large_xattr_enabled ||
+ skip_env "ea_inode feature disabled"
+
+ $LFS setstripe -C $setcount $DIR/$tdir/$tfile ||
+ error "setstripe failed"
+
+ local count=$($LFS getstripe -c $DIR/$tdir/$tfile)
+ [ $count -eq $setcount ] ||
+ error "stripe count $count, should be $setcount"
+
+ $LFS getstripe $DIR/$tdir/$tfile 2>&1 | grep "overstriped" &&
+ error "overstriped should not be set in pattern"
+
+ dd if=/dev/zero of=$DIR/$tdir/$tfile bs=1M count=4 conv=notrunc ||
+ error "dd failed"
+}
+run_test 27Cc "fewer stripes than OSTs does not set overstriping"
+
+test_27Cd() {
+ [[ $($LCTL get_param mdc.*.import) =~ connect_flags.*overstriping ]] ||
+ skip "server does not support overstriping"
+ [[ $OSTCOUNT -lt 2 ]] && skip_env "need > 1 OST"
+ large_xattr_enabled || skip_env "ea_inode feature disabled"
+
+ test_mkdir -p $DIR/$tdir
+ local setcount=$LOV_MAX_STRIPE_COUNT
+
+ $LFS setstripe -C $setcount $DIR/$tdir/$tfile ||
+ error "setstripe failed"
+
+ local count=$($LFS getstripe -c $DIR/$tdir/$tfile)
+ [ $count -eq $setcount ] ||
+ error "stripe count $count, should be $setcount"
+
+ $LFS getstripe $DIR/$tdir/$tfile 2>&1 | grep "overstriped" ||
+ error "overstriped should be set in pattern"
+
+ dd if=/dev/zero of=$DIR/$tdir/$tfile bs=1M count=4 conv=notrunc ||
+ error "dd failed"
+
+ rm -f $DIR/$tdir/$tfile || error "Delete $tfile failed"
+}
+run_test 27Cd "test maximum stripe count"
+
+test_27Ce() {
+ [[ $($LCTL get_param mdc.*.import) =~ connect_flags.*overstriping ]] ||
+ skip "server does not support overstriping"
+ test_mkdir -p $DIR/$tdir
+
+ pool_add $TESTNAME || error "Pool creation failed"
+ pool_add_targets $TESTNAME 0 || error "pool_add_targets failed"
+
+ local setcount=8
+
+ $LFS setstripe -C $setcount -p "$TESTNAME" $DIR/$tdir/$tfile ||
+ error "setstripe failed"
+
+ local count=$($LFS getstripe -c $DIR/$tdir/$tfile)
+ [ $count -eq $setcount ] ||
+ error "stripe count $count, should be $setcount"
+
+ $LFS getstripe $DIR/$tdir/$tfile 2>&1 | grep "overstriped" ||
+ error "overstriped should be set in pattern"
+
+ dd if=/dev/zero of=$DIR/$tdir/$tfile bs=1M count=4 conv=notrunc ||
+ error "dd failed"
+
+ rm -f $DIR/$tdir/$tfile || error "Delete $tfile failed"
+}
+run_test 27Ce "test pool with overstriping"
+
+test_27Cf() {
+ [[ $($LCTL get_param mdc.*.import) =~ connect_flags.*overstriping ]] ||
+ skip "server does not support overstriping"
+ [[ $OSTCOUNT -ge $(($LOV_MAX_STRIPE_COUNT / 2)) ]] &&
+ skip_env "too many osts, skipping"
+
+ test_mkdir -p $DIR/$tdir
+
+ local setcount=$(($OSTCOUNT * 2))
+ [ $setcount -ge 160 ] || large_xattr_enabled ||
+ skip_env "ea_inode feature disabled"
+
+ $LFS setstripe -C $setcount $DIR/$tdir/ ||
+ error "setstripe failed"
+
+ echo 1 > $DIR/$tdir/$tfile
+
+ local count=$($LFS getstripe -c $DIR/$tdir/$tfile)
+ [ $count -eq $setcount ] ||
+ error "stripe count $count, should be $setcount"
+
+ $LFS getstripe $DIR/$tdir/$tfile 2>&1 | grep "overstriped" ||
+ error "overstriped should be set in pattern"
+
+ dd if=/dev/zero of=$DIR/$tdir/$tfile bs=1M count=4 conv=notrunc ||
+ error "dd failed"
+
+ rm -f $DIR/$tdir/$tfile || error "Delete $tfile failed"
+}
+run_test 27Cf "test default inheritance with overstriping"