Whamcloud - gitweb
EX-3191 pcc: add test for mmap | write | detach racer
authorQian Yingjin <qian@ddn.com>
Thu, 27 May 2021 07:52:29 +0000 (15:52 +0800)
committerLi Xi <lixi@ddn.com>
Sat, 5 Jun 2021 15:42:59 +0000 (15:42 +0000)
This patch adds the mmap racer among: (write | read | mmap_cat |
detach | unlink).

Signed-off-by: Qian Yingjin <qian@ddn.com>
Change-Id: I5db160851a95937275fea6ae32f40dcd0fe69f46
Reviewed-on: https://review.whamcloud.com/43842
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Li Xi <lixi@ddn.com>
lustre/tests/sanity-pcc.sh

index b01dd7f..1d858fc 100644 (file)
@@ -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"