From 07e02a600e5707de30e1441ce56b68b0cbc3c260 Mon Sep 17 00:00:00 2001 From: Alexander Zarochentsev Date: Mon, 15 May 2023 13:47:39 -0400 Subject: [PATCH] LU-16826 tests: lfsck to repair a dangling remote entry Testing how lfsck repairs a dir entry to a non-existing Lustre object. HPE-bug-id: LUS-11609 Test-Parameters: trivial testlist=sanity-lfsck fstype=ldiskfs mdscount=2 mdtcount=4 env=ONLY=23d Signed-off-by: Alexander Zarochentsev Change-Id: I88dc8be98bacd2a199facfe3569567de6a713ff6 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50998 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Alexander Boyko Reviewed-by: Andrew Perepechko Reviewed-by: Oleg Drokin --- lustre/tests/sanity-lfsck.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/lustre/tests/sanity-lfsck.sh b/lustre/tests/sanity-lfsck.sh index 72a66d0..ff3280a 100755 --- a/lustre/tests/sanity-lfsck.sh +++ b/lustre/tests/sanity-lfsck.sh @@ -4184,6 +4184,50 @@ test_23c() { } run_test 23c "LFSCK can repair dangling name entry (3)" +test_23d() { + (( MDSCOUNT >= 2 )) || skip "needs >= 2 MDTs" + [[ $mds1_FSTYPE == ldiskfs ]] || + skip "ldiskfs-only test due to a low-level mds fs access" + + mkdir $DIR/$tdir + $LFS mkdir -i 0 $DIR/$tdir/mdt0dir + $LFS mkdir -i 1 $DIR/$tdir/mdt1dir + + echo "b-a-r" > $DIR/$tdir/mdt0dir/foo + local foofid=$($LFS path2fid $DIR/$tdir/mdt0dir/foo | sed -E 's/^.(.*).$/\1/') + + mv $DIR/$tdir/mdt0dir/foo $DIR/$tdir/mdt1dir/ + + stop mds1 + + local devname=$(mdsdevname 1) + local cmd="$DEBUGFS -w -R \\\"rm /REMOTE_PARENT_DIR/${foofid}\\\" $devname" + do_facet mds1 "$cmd" + + start mds1 $devname $MDS_MOUNT_OPTS || error "start mds1 failed" + + cat $DIR/$tdir/mdt1dir/foo && error "file read should fail" + + do_facet mds2 $LCTL lfsck_start -M ${FSNAME}-MDT0001 -t namespace -C || + error "lfsck namespace failed to start" + wait_update_facet mds2 "$LCTL get_param -n \ + mdd.${FSNAME}-MDT0001.lfsck_namespace | + awk '/^status/ { print \\\$2 }'" "completed" 32 || + error " unexpected lfsck status" + + cat $DIR/$tdir/mdt1dir/foo || error "file read should succeed" + + do_facet mds1 $LCTL lfsck_start -M ${FSNAME}-MDT0000 -t layout -o || + error "lfsck namespace failed to start" + wait_update_facet mds1 "$LCTL get_param -n \ + mdd.${FSNAME}-MDT0000.lfsck_layout | + awk '/^status/ { print \\\$2 }'" "completed" 32 || + error " unexpected lfsck status" + + cmp $DIR/$tdir/mdt1dir/foo <(echo "b-a-r") || error "file body has changed" +} +run_test 23d "LFSCK can repair a dangling name entry to a remote object" + test_24() { [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return [ -n "$FILESET" ] && skip "Not functional for FILESET set" -- 1.8.3.1