X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Ftest-framework.sh;h=3b5214e2e829aa1c631b152a61692891c170cd55;hb=4d5bc3e5e74c3c2fc01cf51570ed8cee3521fd72;hp=6216ad6c120229e632eeba079b3095d08c9b4ea7;hpb=6e704244293aec98b39b8243fb2d13e2a8c9b674;p=fs%2Flustre-release.git diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 6216ad6..3b5214e 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -3558,17 +3558,55 @@ generate_db() { done } +# Run lfsck on server node if lfsck can't be found on client (LU-2571) +run_lfsck_remote() { + local cmd="$LFSCK_BIN -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT" + local client=$1 + local mounted=true + local rc=0 + + #Check if lustre is already mounted + do_rpc_nodes $client is_mounted $MOUNT || mounted=false + if ! $mounted; then + zconf_mount $client $MOUNT || + error "failed to mount Lustre on $client" + fi + #Run lfsck + echo $cmd + do_node $node $cmd || rc=$? + #Umount if necessary + if ! $mounted; then + zconf_umount $client $MOUNT || + error "failed to unmount Lustre on $client" + fi + + [ $rc -le $FSCK_MAX_ERR ] || + error "$cmd returned $rc, should be <= $FSCK_MAX_ERR" + echo "lfsck finished with rc=$rc" + + return $rc +} + run_lfsck() { - local cmd="$LFSCK_BIN -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT" - echo $cmd - local rc=0 - eval $cmd || rc=$? - [ $rc -le $FSCK_MAX_ERR ] || \ - error "$cmd returned $rc, should be <= $FSCK_MAX_ERR" - echo "lfsck finished with rc=$rc" + local facets="client $SINGLEMDS" + local found=false + local facet + local node + local rc=0 - rm -rvf $MDSDB* $OSTDB* || true - return 0 + for facet in $facets; do + node=$(facet_active_host $facet) + if check_progs_installed $node $LFSCK_BIN; then + found=true + break + fi + done + ! $found && error "None of \"$facets\" supports lfsck" + + run_lfsck_remote $node || rc=$? + + rm -rvf $MDSDB* $OSTDB* || true + return $rc } check_and_cleanup_lustre() {