From: Qian Yingjin Date: Thu, 27 May 2021 07:52:29 +0000 (+0800) Subject: EX-3191 pcc: add test for mmap | write | detach racer X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=b6239369798122073702862416fa10006f8fbb56;p=fs%2Flustre-release.git EX-3191 pcc: add test for mmap | write | detach racer This patch adds the mmap racer among: (write | read | mmap_cat | detach | unlink). Signed-off-by: Qian Yingjin Change-Id: I5db160851a95937275fea6ae32f40dcd0fe69f46 Reviewed-on: https://review.whamcloud.com/43842 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Li Xi --- diff --git a/lustre/tests/sanity-pcc.sh b/lustre/tests/sanity-pcc.sh index b01dd7f..1d858fc 100644 --- a/lustre/tests/sanity-pcc.sh +++ b/lustre/tests/sanity-pcc.sh @@ -3302,6 +3302,87 @@ test_41() { } run_test 41 "Test mtime rule for PCC-RO open attach with O_RDONLY mode" +test_99() { + local loopfile="$TMP/$tfile" + local mntpt="/mnt/pcc.$tdir" + local hsm_root="$mntpt/$tdir" + local file=$DIR/$tfile + + setup_loopdev $SINGLEAGT $loopfile $mntpt 60 + do_facet $SINGLEAGT mkdir $hsm_root || error "mkdir $hsm_root failed" + setup_pcc_mapping $SINGLEAGT \ + "projid={0}\ roid=$HSM_ARCHIVE_NUMBER\ ropcc=1" + do_facet $SINGLEAGT $LCTL pcc list $MOUNT + + do_facet $SINGLEAGT dd if=/dev/zero of=$file bs=1M count=50 || + error "Write $file failed" + + local rpid + local rpid2 + local wpid + local upid + local dpid + local lpcc_path + + lpcc_path=$(lpcc_fid2path $hsm_root $file) + ( + while [ ! -e $DIR/sanity-pcc.42.lck ]; do + do_facet $SINGLEAGT dd if=/dev/zero of=$file bs=1M count=50 conv=notrunc || + error "failed to write $file" + sleep 0.$((RANDOM % 4 + 1)) + done + )& + wpid=$! + + ( + while [ ! -e $DIR/sanity-pcc.42.lck ]; do + do_facet $SINGLEAGT dd if=$file of=/dev/null bs=1M count=50 || + error "failed to write $file" + sleep 0.$((RANDOM % 4 + 1)) + done + )& + rpid=$! + + ( + while [ ! -e $DIR/sanity-pcc.42.lck ]; do + do_facet $SINGLEAGT $MMAP_CAT $file > /dev/null || + error "failed to mmap_cat $file" + sleep 0.$((RANDOM % 4 + 1)) + done + )& + rpid2=$! + + ( + while [ ! -e $DIR/sanity-pcc.42.lck ]; do + echo "Unlink $lpcc_path" + do_facet $SINGLEAGT unlink $lpcc_path + sleep 1 + done + true + )& + upid=$! + + ( + while [ ! -e $DIR/sanity-pcc.42.lck ]; do + echo "Detach $file ..." + do_facet $SINGLEAGT $LFS pcc detach $file + sleep 0.$((RANDOM % 8 + 1)) + done + )& + dpid=$! + + sleep 60 + touch $DIR/sanity-pcc.42.lck + wait $wpid || error "$?: write failed" + wait $rpid || error "$?: read failed" + wait $rpid2 || error "$?: read2 failed" + wait $upid || error "$?: unlink failed" + wait $dpid || error "$?: detach failed" + + do_facet $SINGLEAGT $LFS pcc detach $file +} +run_test 99 "race among unlink | mmap read | write | detach for PCC-RO file" + test_100() { local loopfile="$TMP/$tfile" local mntpt="/mnt/pcc.$tdir"