ALWAYS_EXCEPT+=" 407 312 "
if $SHARED_KEY; then
- # bug number: LU-9795 LU-9795 LU-9795 LU-9795 LU-12781
- ALWAYS_EXCEPT+=" 17n 60a 133g 300f 272a"
+ # bug number: LU-9795 LU-9795 LU-9795 LU-9795
+ ALWAYS_EXCEPT+=" 17n 60a 133g 300f"
fi
selinux_status=$(getenforce)
fi
# 5 12 (min)"
-[ "$SLOW" = "no" ] && EXCEPT_SLOW="27m 64b 68 71 115 300o"
+[ "$SLOW" = "no" ] && EXCEPT_SLOW="27m 64b 68 71 115 135 136 300o"
if [ "$mds1_FSTYPE" = "zfs" ]; then
# bug number for skipped test:
local dir3=$MOUNT/$tdir-3
mkdir $dir3 || error "mkdir $dir3 failed"
- ! getfattr -n trusted.lov $dir3 &> /dev/null ||
- error "$dir3 shouldn't have LOV EA"
+ # $dir3 shouldn't have LOV EA, but "lfs getstripe -d $dir3" should show
+ # the root layout, which is the actual default layout that will be used
+ # when new files are created in $dir3.
+ local dir3_layout=$(get_layout_param $dir3)
+ local root_dir_layout=$(get_layout_param $MOUNT)
+ [[ "$dir3_layout" = "$root_dir_layout" ]] ||
+ error "$dir3 should show the default layout from $MOUNT"
# set OST pool on root directory
local pool=$TESTNAME
local dir4=$MOUNT/$tdir-4
mkdir $dir4 || error "mkdir $dir4 failed"
- ! getfattr -n trusted.lov $dir4 &> /dev/null ||
- error "$dir4 shouldn't have LOV EA"
+ local dir4_layout=$(get_layout_param $dir4)
+ root_dir_layout=$(get_layout_param $MOUNT)
+ echo "$LFS getstripe -d $dir4"
+ $LFS getstripe -d $dir4
+ echo "$LFS getstripe -d $MOUNT"
+ $LFS getstripe -d $MOUNT
+ [[ "$dir4_layout" = "$root_dir_layout" ]] ||
+ error "$dir4 should show the default layout from $MOUNT"
# new file created in $dir4 should inherit the pool from
# the filesystem default
local dir5=$dir4/$tdir-5
mkdir $dir5 || error "mkdir $dir5 failed"
- local dir4_layout=$(get_layout_param $dir4)
+ dir4_layout=$(get_layout_param $dir4)
local dir5_layout=$(get_layout_param $dir5)
[[ "$dir4_layout" = "$dir5_layout" ]] ||
error "$dir5 should inherit the default layout from $dir4"
}
run_test 134b "Server rejects lock request when reaching lock_limit_mb"
+test_135() {
+ remote_mds_nodsh && skip "remote MDS with nodsh"
+ [[ $MDS1_VERSION -lt $(version_code 2.13.50) ]] &&
+ skip "Need MDS version at least 2.13.50"
+ local fname
+
+ mkdir -p $DIR/$tdir || error "failed to create $DIR/$tdir"
+
+#define OBD_FAIL_PLAIN_RECORDS 0x1319
+ #set only one record at plain llog
+ do_facet $SINGLEMDS $LCTL set_param fail_loc=0x1319 fail_val=1
+
+ #fill already existed plain llog each 64767
+ #wrapping whole catalog
+ createmany -o -u $DIR/$tdir/$tfile- $((64767 * 1))
+
+ createmany -o $DIR/$tdir/$tfile_ 64700
+ for (( i = 0; i < 64700; i = i + 2 ))
+ do
+ rm $DIR/$tdir/$tfile_$i &
+ rm $DIR/$tdir/$tfile_$((i + 1)) &
+ local pid=$!
+ wait $pid
+ done
+
+ #waiting osp synchronization
+ wait_delete_completed
+}
+run_test 135 "Race catalog processing"
+
+test_136() {
+ remote_mds_nodsh && skip "remote MDS with nodsh"
+ [[ $MDS1_VERSION -lt $(version_code 2.13.50) ]] &&
+ skip "Need MDS version at least 2.13.50"
+ local fname
+
+ mkdir -p $DIR/$tdir || error "failed to create $DIR/$tdir"
+ $SETSTRIPE -c 1 -i 0 $DIR/$tdir || error "failed to set striping"
+ #set only one record at plain llog
+#define OBD_FAIL_CATALOG_FULL_CHECK 0x131a
+ do_facet $SINGLEMDS $LCTL set_param fail_loc=0x131a fail_val=1
+
+ #fill already existed 2 plain llogs each 64767
+ #wrapping whole catalog
+ createmany -o -u $DIR/$tdir/$tfile- $((64767 * 1))
+ createmany -o -u $DIR/$tdir/$tfile- $((64767 * 3 / 2))
+ wait_delete_completed
+
+ createmany -o $DIR/$tdir/$tfile_ 10
+ sleep 25
+
+ do_facet $SINGLEMDS $LCTL set_param fail_val=3
+ for (( i = 0; i < 10; i = i + 3 ))
+ do
+ rm $DIR/$tdir/$tfile_$i &
+ rm $DIR/$tdir/$tfile_$((i + 1)) &
+ local pid=$!
+ wait $pid
+ sleep 7
+ rm $DIR/$tdir/$tfile_$((i + 2)) &
+ done
+
+ #waiting osp synchronization
+ wait_delete_completed
+}
+run_test 136 "Race catalog processing 2"
+
test_140() { #bug-17379
[ $PARALLEL == "yes" ] && skip "skip parallel run"
# generate some changelog records to accumulate on each MDT
test_mkdir -c $MDSCOUNT $DIR/$tdir || error "test_mkdir $tdir failed"
+ log "$(date +%s): creating first files"
createmany -m $DIR/$tdir/$tfile $((MDSCOUNT * 2)) ||
error "create $DIR/$tdir/$tfile failed"
# check changelogs have been generated
+ local start=$SECONDS
+ local idle_time=$((MDSCOUNT * 5 + 5))
local nbcl=$(changelog_dump | wc -l)
[[ $nbcl -eq 0 ]] && error "no changelogs found"
- for param in "changelog_max_idle_time=10" \
+ for param in "changelog_max_idle_time=$idle_time" \
"changelog_gc=1" \
"changelog_min_gc_interval=2" \
"changelog_min_free_cat_entries=3"; do
do_nodes $mdts $LCTL set_param mdd.*.$param
done
- # force cl_user2 to be idle (1st part)
- sleep 9
+ # force cl_user2 to be idle (1st part), but also cancel the
+ # cl_user1 records so that it is not evicted later in the test.
+ local sleep1=$((idle_time / 2))
+ echo "$(date +%s): sleep1 $sleep1/${idle_time}s"
+ sleep $sleep1
# simulate changelog catalog almost full
#define OBD_FAIL_CAT_FREE_RECORDS 0x1313
"$user_rec1, but is $user_rec2"
done
- # force cl_user2 to be idle (2nd part) and to reach
- # changelog_max_idle_time
- sleep 2
+ # force cl_user2 idle (2nd part) to just exceed changelog_max_idle_time
+ local sleep2=$((idle_time - (SECONDS - start) + 1))
+ echo "$(date +%s): sleep2 $sleep2/${idle_time}s"
+ sleep $sleep2
- # generate one more changelog to trigger fail_loc
- createmany -m $DIR/$tdir/${tfile}bis $((MDSCOUNT * 2)) ||
- error "create $DIR/$tdir/${tfile}bis failed"
+ # Generate one more changelog to trigger GC at fail_loc for cl_user2.
+ # cl_user1 should be OK because it recently processed records.
+ echo "$(date +%s): creating $((MDSCOUNT * 2)) files"
+ createmany -m $DIR/$tdir/${tfile}b $((MDSCOUNT * 2)) ||
+ error "create $DIR/$tdir/${tfile}b failed"
# ensure gc thread is done
for i in $(mdts_nodes); do
error "md5sum differ: $old_md5, $new_md5"
[ $($LFS getstripe -c $dom) -eq 2 ] ||
- error "migrate stripe count bad: $(LFS getstripe -c $dom) != 2"
+ error "bad final stripe count: $($LFS getstripe -c $dom) != 2"
}
run_test 272a "DoM migration: new layout with the same DOM component"