overlay/016: split into two tests

overlay/016 tests two cases of ro/rw fd data inconsistecies -
one using pread and one using mmap read (i.e. mread).

The first case now passes with stacked overlay file operations
patch set merged. The second case will still fail.

By splitting the two test cases we get one regression test for
the common case of ro/rw fd data inconsistecy with pread and
one test to track the remaining non-standard behavior of
overlayfs w.r.t mmap.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Amir Goldstein
2018-08-24 07:40:44 +03:00
committed by Eryu Guan
parent 2028376ff9
commit aefa911834
5 changed files with 70 additions and 18 deletions
-15
View File
@@ -43,13 +43,11 @@ _scratch_mkfs >>$seqres.full 2>&1
lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_LOWER
mkdir -p $lowerdir
echo "This is old news" > $lowerdir/foo
echo "This is old news" > $lowerdir/bar
_scratch_mount
#
# case #1:
# open file for read (rofd)
# open file for write (rwfd)
# write to rwfd
@@ -62,18 +60,5 @@ $XFS_IO_PROG -r $SCRATCH_MNT/foo \
-C "pread -v 0 16" \
| _filter_xfs_io | _filter_scratch
#
# case #2:
# mmap MAP_SHARED|PROT_READ of rofd
# write to rwfd
# read from mapped memory
#
$XFS_IO_PROG -r $SCRATCH_MNT/bar \
-C "mmap -r 0 16" \
-C "open $SCRATCH_MNT/bar" \
-C "pwrite -S 0x61 0 16" \
-C "mread -v 0 16" \
| _filter_xfs_io | _filter_scratch
status=0
exit
-3
View File
@@ -6,6 +6,3 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
00000000: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
read 16/16 bytes at offset 0
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 16/16 bytes at offset 0
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
00000000: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
+65
View File
@@ -0,0 +1,65 @@
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2018 CTERA Networks. All Rights Reserved.
#
# FSQA Test No. 061
#
# Test ro/rw fd data inconsistecies
#
# This is a variant of test overlay/016 with mread instead of pread.
#
# This simple test demonstrates a known issue with overlayfs:
# - process A opens file F for read + mmap
# - process B writes new data to file F
# - process A reads old data from mapped memory
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
cd /
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
# real QA test starts here
_supported_fs overlay
_supported_os Linux
_require_scratch
_require_xfs_io_command "open"
rm -f $seqres.full
_scratch_mkfs >>$seqres.full 2>&1
# Create our test files.
lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_LOWER
mkdir -p $lowerdir
echo "This is old news" > $lowerdir/foo
_scratch_mount
#
# mmap MAP_SHARED|PROT_READ of rofd
# write to rwfd
# read from mapped memory
#
$XFS_IO_PROG -r $SCRATCH_MNT/foo \
-C "mmap -r 0 16" \
-C "open $SCRATCH_MNT/foo" \
-C "pwrite -S 0x61 0 16" \
-C "mread -v 0 16" \
| _filter_xfs_io | _filter_scratch
status=0
exit
+4
View File
@@ -0,0 +1,4 @@
QA output created by 061
wrote 16/16 bytes at offset 0
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
00000000: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa
+1
View File
@@ -63,3 +63,4 @@
058 auto quick exportfs
059 auto quick copyup
060 auto quick metacopy
061 auto quick copyup