From patchwork Fri Jun 1 10:44:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amir Goldstein X-Patchwork-Id: 10442955 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 67150602BC for ; Fri, 1 Jun 2018 10:42:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5881328E8B for ; Fri, 1 Jun 2018 10:42:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4BE5628E91; Fri, 1 Jun 2018 10:42:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B6C0528E8B for ; Fri, 1 Jun 2018 10:42:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751422AbeFAKmw (ORCPT ); Fri, 1 Jun 2018 06:42:52 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:52311 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751555AbeFAKmv (ORCPT ); Fri, 1 Jun 2018 06:42:51 -0400 Received: by mail-wm0-f65.google.com with SMTP id 18-v6so2148206wml.2; Fri, 01 Jun 2018 03:42:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/3ReoL93hPQe0S55A/pPWzunstEbzirrqoCXCTFytIg=; b=G5W6PAdRIEuHeWDjJN4D4XmgK71Q2W8ynFU3tv14F2O1JRCcQwVuhiGj7VhPh8gB2T IAtIygH5MAKAslSbJu6vipXtKgJ/tZCovQWze68TJInTlgvDS62lZyhOP1gtzcmGPxtP p7ayzOdm1Sc5vVRV07L420V9Jr7mK8bZw05hnhF/tUtTN/pthel9iQzsJe8HHD/ntS/R cXG6NCBEZOcc5eNFuHzISYrjik8G0Pr3MCbbNTYONIYfMilXHsWILId0bfcLgWwyGKXD h18r3/hQ1xACLgeHWW9kVe+5yy2I2j5V8goK9qbnRVmlnoZiBxKkjG87q90mNB7MT5Vt VKkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/3ReoL93hPQe0S55A/pPWzunstEbzirrqoCXCTFytIg=; b=JaUELEgfFg9r2PvHbnAW+I/6/JynqKYTlIn3JlxRF1tibwpm0ELXaLBXFIw/J2rbhn 2r+cwAcacljTzBcYyZghn/fKnc9D4wraaufWAUQ/xmpkzNsv1MyPXp7qi5ke0n332psY j7NqN0adQigtIpxsHWJcCh1uD7ktZbnYiSfBepRphN9r8RSmai+Haxec4o8ITf35P8tx robeM4HzYUOaW5XOxn4KXR5jCf2tIYsy+0LCW7WZDM8LoPdbW6Yzp+4YnGo1sZ2ofyNg a0M3MZ/FELOQe5+TMNFPKSU7TU3T4gJA74/8xV/yRzOGo1V8PaQ2Oao9tk5ghjY8yR9z loaQ== X-Gm-Message-State: ALKqPwcfVRInFCHvo+D21GkgG8mqzUOD2AKI7v2gZ3hhN5At4Qk4doJ9 xNcU2EjcAO3usHtDJEwQPQvtgQ== X-Google-Smtp-Source: ADUXVKL/5sfOldpI3PSpigMHZEHppUeX/wzkU+aGvXrLF+8phLyRorMdfwvZcD9Z8VnoZCHByIxr6g== X-Received: by 2002:a1c:40d4:: with SMTP id n203-v6mr2210753wma.101.1527849769818; Fri, 01 Jun 2018 03:42:49 -0700 (PDT) Received: from localhost.localdomain ([141.226.15.87]) by smtp.gmail.com with ESMTPSA id 135-v6sm2975578wmx.21.2018.06.01.03.42.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 01 Jun 2018 03:42:49 -0700 (PDT) From: Amir Goldstein To: Eryu Guan Cc: Miklos Szeredi , Vivek Goyal , linux-unionfs@vger.kernel.org, fstests@vger.kernel.org Subject: [PATCH 2/2] overlay/016: split into two tests Date: Fri, 1 Jun 2018 13:44:17 +0300 Message-Id: <1527849857-22951-3-git-send-email-amir73il@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1527849857-22951-1-git-send-email-amir73il@gmail.com> References: <1527849857-22951-1-git-send-email-amir73il@gmail.com> Sender: fstests-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 will pass as soon as stacked overlay operations patch set is merged. The second case requires enabling a new opt-in feature "copy_up_shared" in order to pass. Instead of changing the entire test from fail to notrun, split the two cases into two tests and require the new feature only for the new test. This way, the new test will change from notrun to pass with stacked overlay operations and the old test will change from fail to pass. Signed-off-by: Amir Goldstein --- tests/overlay/016 | 14 --------- tests/overlay/016.out | 3 -- tests/overlay/061 | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/overlay/061.out | 4 +++ tests/overlay/group | 1 + 5 files changed, 90 insertions(+), 17 deletions(-) create mode 100755 tests/overlay/061 create mode 100644 tests/overlay/061.out diff --git a/tests/overlay/016 b/tests/overlay/016 index 86a7d28..08a2f98 100755 --- a/tests/overlay/016 +++ b/tests/overlay/016 @@ -66,7 +66,6 @@ _scratch_mount # -# case #1: # open file for read (rofd) # open file for write (rwfd) # write to rwfd @@ -79,18 +78,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 diff --git a/tests/overlay/016.out b/tests/overlay/016.out index a28aaa6..02b2ae2 100644 --- a/tests/overlay/016.out +++ b/tests/overlay/016.out @@ -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 diff --git a/tests/overlay/061 b/tests/overlay/061 new file mode 100755 index 0000000..1b248df --- /dev/null +++ b/tests/overlay/061 @@ -0,0 +1,85 @@ +#! /bin/bash +# FSQA Test No. 061 +# +# Test ro/rw fd data inconsistecies +# +# This is a variant of test overlay/016 with mread instead of pread. +# This test requires and enables copy_up_shared feature. +# +# 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 +# +#----------------------------------------------------------------------- +# +# Copyright (C) 2016 CTERA Networks. All Rights Reserved. +# Author: Amir Goldstein +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +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_scratch_feature copy_up_shared +_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 +echo "This is old news" > $lowerdir/bar + +_scratch_mount -o copy_up_shared=on + + +# +# 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 diff --git a/tests/overlay/061.out b/tests/overlay/061.out new file mode 100644 index 0000000..0662721 --- /dev/null +++ b/tests/overlay/061.out @@ -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 diff --git a/tests/overlay/group b/tests/overlay/group index b73d7e9..ccc71f3 100644 --- a/tests/overlay/group +++ b/tests/overlay/group @@ -63,3 +63,4 @@ 058 auto quick exportfs 059 auto quick copyup 060 auto quick metacopy +061 auto quick copyup