Whamcloud - gitweb
LU-4343 tests: mkdir failing in sanity-hsm test 228
[fs/lustre-release.git] / lustre / tests / sanity-hsm.sh
index 69a0a36..919d104 100644 (file)
@@ -479,6 +479,12 @@ make_small() {
         path2fid $1 || error "cannot get fid on $1"
 }
 
+make_small_sync() {
+       dd if=/dev/urandom of=$1 count=1 bs=1M conv=sync ||
+               error "cannot create $1"
+       path2fid $1 || error "cannot get fid on $1"
+}
+
 cleanup_large_files() {
        local ratio=$(df -P $MOUNT | tail -1 | awk '{print $5}' |
                      sed 's/%//g')
@@ -1343,6 +1349,15 @@ test_21() {
        local fid=$(make_small $f)
        check_hsm_flags $f "0x00000000"
 
+       # LU-4388/LU-4389 - ZFS does not report full number of blocks
+       # used until file is flushed to disk
+       if [  $(facet_fstype ost1) == "zfs" ]; then
+           # this causes an OST_SYNC rpc to be sent
+           dd if=/dev/zero of=$f bs=512 count=1 oflag=sync conv=notrunc,fsync
+           # clear locks to reread file data
+           cancel_lru_locks osc
+       fi
+
        local orig_size=$(stat -c "%s" $f)
        local orig_blocks=$(stat -c "%b" $f)
 
@@ -3253,10 +3268,9 @@ test_228() {
        # test needs a running copytool
        copytool_setup
 
-       dd if=/dev/urandom of=$DIR/$tfile bs=1M count=1 conv=sync ||
-               error "creating $DIR/$tfile"
+       local fid=$(make_small_sync $DIR/$tfile)
        $LFS hsm_archive --archive $HSM_ARCHIVE_NUMBER $DIR/$tfile
-       wait_request_state $(path2fid $DIR/$tfile) ARCHIVE SUCCEED
+       wait_request_state $fid ARCHIVE SUCCEED
 
        $LFS hsm_release $DIR/$tfile
        check_hsm_flags $DIR/$tfile "0x0000000d"
@@ -3273,13 +3287,15 @@ test_228() {
        $LFS hsm_release $DIR/$tfile
        check_hsm_flags $DIR/$tfile "0x0000000d"
 
-       mkdir $DIR/$tdir
+       mkdir -p $DIR/$tdir || error "mkdir $tdir failed"
 
        tar cf - --sparse $DIR/$tfile | tar xvf - -C $DIR/$tdir ||
                error "tar failed"
        cmp $DIR/$tfile $DIR/$tdir/$DIR/$tfile ||
                error "comparing untarred $DIR/$tfile"
 
+       rm -f $DIR/$tfile $DIR/$tfile.2 ||
+               error "rm $DIR/$tfile or $DIR/$tfile.2 failed"
        copytool_cleanup
 }
 run_test 228 "On released file, return extend to FIEMAP. For [cp,tar] --sparse"