}
run_test 5 "Fail OST during iozone"
-kbytesfree() {
- calc_osc_kbytes kbytesfree
-}
-
test_6() {
remote_mds_nodsh && skip "remote MDS with nodsh" && return 0
wait_destroy_complete || error "first wait_destroy_complete failed"
sync_all_data
- local before=$(kbytesfree)
+ local before=$(calc_osc_kbytes kbytesfree)
dd if=/dev/urandom bs=4096 count=1280 of=$f || error "dd failed"
$LFS getstripe $f || error "$LFS getstripe $f failed"
local stripe_index=$(lfs getstripe -i $f)
wait_mds_ost_sync || error "second wait_mds_ost_sync failed"
# retry till statfs returns useful results
- local after_dd=$(kbytesfree)
+ local after_dd=$(calc_osc_kbytes kbytesfree)
local i=0
while (( $before <= $after_dd && $i < 20 )); do
sync
sleep 1
let ++i
- after_dd=$(kbytesfree)
+ after_dd=$(calc_osc_kbytes kbytesfree)
done
log "before_free: $before after_dd_free: $after_dd took $i seconds"
# let the delete happen
wait_mds_ost_sync || error "third wait_mds_ost_sync failed"
wait_delete_completed || error "second wait_delete_completed failed"
- local after=$(kbytesfree)
+ local after=$(calc_osc_kbytes kbytesfree)
log "free_before: $before free_after: $after"
(( $before <= $after + $(fs_log_size) )) ||
error "$before > $after + logsize $(fs_log_size)"
wait_mds_ost_sync || error "wait_mds_ost_sync failed"
wait_destroy_complete || error "wait_destroy_complete failed"
- local before=$(kbytesfree)
+ local before=$(calc_osc_kbytes kbytesfree)
dd if=/dev/urandom bs=4096 count=1280 of=$f ||
error "dd to file failed: $?"
sync
- local after_dd=$(kbytesfree)
+ local after_dd=$(calc_osc_kbytes kbytesfree)
local i=0
while (( $before <= $after_dd && $i < 10 )); do
sync
sleep 1
let ++i
- after_dd=$(kbytesfree)
+ after_dd=$(calc_osc_kbytes kbytesfree)
done
log "before: $before after_dd: $after_dd took $i seconds"
# let the delete happen
wait_mds_ost_sync || error "wait_mds_ost_sync failed"
wait_delete_completed || error "wait_delete_completed failed"
- local after=$(kbytesfree)
+ local after=$(calc_osc_kbytes kbytesfree)
log "before: $before after: $after"
(( $before <= $after + $(fs_log_size) )) ||
error "$before > $after + logsize $(fs_log_size)"
}
run_test 88 "MDS should not assign same objid to different files "
-function calc_osc_kbytes_used() {
- local kbtotal=$(calc_osc_kbytes kbytestotal)
- local kbfree=$(calc_osc_kbytes kbytesfree)
- echo $((kbtotal-kbfree))
-}
-
test_89() {
cancel_lru_locks osc
mkdir_on_mdt0 $DIR/$tdir || error "mkdir $DIR/$tdir failed"
rm -f $DIR/$tdir/$tfile
wait_mds_ost_sync || error "initial MDS-OST sync timed out"
wait_delete_completed || error "initial wait delete timed out"
- local blocks1=$(calc_osc_kbytes_used)
+ local before=$(calc_osc_kbytes kbytesfree)
local write_size=$(fs_log_size)
$LFS setstripe -i 0 -c 1 $DIR/$tdir/$tfile
- [ $write_size -lt 1024 ] && write_size=1024
+ (( $write_size >= 1024 )) || write_size=1024
dd if=/dev/zero bs=${write_size}k count=10 of=$DIR/$tdir/$tfile
sync
stop ost1
wait_mds_ost_sync || error "MDS-OST sync timed out"
wait_delete_completed || error "wait delete timed out"
- local blocks2=$(calc_osc_kbytes_used)
+ local after=$(calc_osc_kbytes kbytesfree)
- [ $((blocks2 - blocks1)) -le $(fs_log_size) ] ||
- error $((blocks2 - blocks1)) blocks leaked
+ log "free_before: $before free_after: $after"
+ (( $before <= $after + $(fs_log_size) )) ||
+ error "kbytesfree $before > $after + margin $(fs_log_size)"
}
run_test 89 "no disk space leak on late ost connection"
}
fs_log_size() {
- local facet=${1:-$SINGLEMDS}
+ local facet=${1:-ost1}
local size=0
+ local mult=$OSTCOUNT
case $(facet_fstype $facet) in
- ldiskfs) size=72;; # largest seen is 64, leave some headroom
+ ldiskfs) size=32;; # largest seen is 64 with multiple OSTs
# grant_block_size is in bytes, allow at least 2x max blocksize
zfs) size=$(lctl get_param osc.$FSNAME*.import |
awk '/grant_block_size:/ {print $2/512; exit;}')
;;
esac
- echo -n $((size * MDSCOUNT))
+ [[ $facet =~ mds ]] && mult=$MDTCOUNT
+ echo -n $((size * mult))
}
fs_inode_ksize() {