}
run_test 133g "Check for Oopses on bad io area writes/reads in /proc"
+test_133h() {
+ remote_mds_nodsh && skip "remote MDS with nodsh" && return
+ remote_ost_nodsh && skip "remote OST with nodsh" && return
+ [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.9.54) ]] &&
+ skip "Need MDS version at least 2.9.54" && return
+
+ local facet
+ for facet in client mds1 ost1; do
+ local facet_proc_dirs=$(do_facet $facet \
+ \\\ls -d $proc_regexp 2> /dev/null)
+ [ -z "$facet_proc_dirs" ] && error "no proc_dirs on $facet"
+ echo "${facet}_proc_dirs='$facet_proc_dirs'"
+ # Get the list of files that are missing the terminating newline
+ local missing=($(do_facet $facet \
+ find ${facet_proc_dirs} -type f \| \
+ while read F\; do \
+ awk -v FS='\v' -v RS='\v\v' \
+ "'END { if(NR>0 && \
+ \\\$NF !~ /.*\\\n\$/) \
+ print FILENAME}'" \
+ '\$F'\; \
+ done 2>/dev/null))
+ [ ${#missing[*]} -eq 0 ] ||
+ error "files do not end with newline: ${missing[*]}"
+ done
+}
+run_test 133h "Proc files should end with newlines"
+
test_134a() {
remote_mds_nodsh && skip "remote MDS with nodsh" && return
[[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.54) ]] &&
error "getdirstripe failed"
stripe_count=$($LFS getdirstripe -c $DIR/$tdir/striped_dir)
if [ "$stripe_count" != "2" ]; then
- error "stripe_count is $stripe_count, expect 2"
+ error "1:stripe_count is $stripe_count, expect 2"
+ fi
+ stripe_count=$($LFS getdirstripe -T $DIR/$tdir/striped_dir)
+ if [ "$stripe_count" != "2" ]; then
+ error "2:stripe_count is $stripe_count, expect 2"
fi
stripe_index=$($LFS getdirstripe -i $DIR/$tdir/striped_dir)
mkdir $DIR/$tdir/striped_dir/dir_c
$LFS setdirstripe -i 0 -c 2 -t all_char $DIR/$tdir/striped_dir/stp_a ||
- error "set striped dir under striped dir error"
+ error "set striped adir under striped dir error"
- $LFS setdirstripe -i 0 -c 2 -t all_char $DIR/$tdir/striped_dir/stp_b ||
- error "set striped dir under striped dir error"
+ $LFS setdirstripe -i 0 -c 2 -H all_char $DIR/$tdir/striped_dir/stp_b ||
+ error "set striped bdir under striped dir error"
$LFS setdirstripe -i 0 -c 2 -t all_char $DIR/$tdir/striped_dir/stp_c ||
- error "set striped dir under striped dir error"
+ error "set striped cdir under striped dir error"
mrename $DIR/$tdir/striped_dir/dir_a $DIR/$tdir/striped_dir/dir_b ||
error "rename dir under striped dir fails"
createmany -o $DIR/$tdir/striped_dir/f- 10 ||
error "create files under striped dir failed"
+ $LFS setdirstripe -i0 -c$MDSCOUNT -H all_char $DIR/$tdir/hashdir ||
+ error "set striped hashdir error"
+
+ $LFS setdirstripe -i0 -c$MDSCOUNT -H all_char $DIR/$tdir/hashdir/d0 ||
+ error "create dir0 under hash dir failed"
+ $LFS setdirstripe -i0 -c$MDSCOUNT -H fnv_1a_64 $DIR/$tdir/hashdir/d1 ||
+ error "create dir1 under hash dir failed"
+
# unfortunately, we need to umount to clear dir layout cache for now
# once we fully implement dir layout, we can drop this
umount_client $MOUNT || error "umount failed"
mount_client $MOUNT || error "mount failed"
+ $LFS find -H fnv_1a_64 $DIR/$tdir/hashdir
+ local dircnt=$($LFS find -H fnv_1a_64 $DIR/$tdir/hashdir | wc -l)
+ [ $dircnt -eq 1 ] || error "lfs find striped dir got:$dircnt,except:1"
+
#set the stripe to be unknown hash type
#define OBD_FAIL_UNKNOWN_LMV_STRIPE 0x1901
$LCTL set_param fail_loc=0x1901