All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chandan Rajendra <chandan@linux.vnet.ibm.com>
To: fstests@vger.kernel.org
Cc: Chandan Rajendra <chandan@linux.vnet.ibm.com>,
	eguan@redhat.com, darrick.wong@oracle.com,
	linux-xfs@vger.kernel.org
Subject: [PATCH V2 10/16] xfs/325: Inject free_extent error after CoW operation
Date: Thu,  6 Sep 2018 14:10:07 +0530	[thread overview]
Message-ID: <20180906084013.2687-11-chandan@linux.vnet.ibm.com> (raw)
In-Reply-To: <20180906084013.2687-1-chandan@linux.vnet.ibm.com>

On a 64k blocksized filesystem, when the test CoWs the file2's offset
range [10 * 64k, 19 * 64k], the call to xfs_bmapi_reserve_delalloc()
allocates 32 64k blocks. This is because XFS_DEFAULT_COWEXTSZ_HINT has
the value of 32 and xfs_get_cowextsz_hint() uses this to compute the
extent alignment. This leads to xfs_bmapi_reserve_delalloc() to reserve
space corresponding to the file range [0, 32 * 64k] in the inode's
cow fork area. On completion of write I/O corresponding to file2's range
[10 * 64k, 19 * 64k], xfs_end_io() moves 10 out of the originally
allocated 32 64k blocks to the data fork area. The remaining 22 64k
blocks linger on in cow fork area of the inode.

Later, when servicing the exit() syscall for the xfs_io process,
xfs_free_eofblocks() ends up invoking xfs_reflink_cancel_cow_blocks()
since i_delayed_blks has the value 22. xfs_reflink_cancel_cow_blocks()
indirectly invokes __xfs_free_extent() which returns EIO since
XFS_ERRTAG_FREE_EXTENT has been set. This leads to the filesystem to be
shutdown. The "rm" command invoked later ends up returning an
error and hence the test fails. The test actually requires that the
filesystem gets shutdown when executing the "rm" command.

To fix the problem, this commit injects the free_extent error after we
CoW file2's [10 * 64k, 19 * 64k] range.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
 tests/xfs/325     | 5 +++--
 tests/xfs/325.out | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/tests/xfs/325 b/tests/xfs/325
index b156de9..6795901 100755
--- a/tests/xfs/325
+++ b/tests/xfs/325
@@ -54,11 +54,12 @@ echo "Check files"
 md5sum $SCRATCH_MNT/file1 | _filter_scratch
 md5sum $SCRATCH_MNT/file2 | _filter_scratch
 
+echo "CoW a few blocks"
+$XFS_IO_PROG -c "pwrite -W -S 0x67 $((10 * blksz)) $((10 * blksz))" $SCRATCH_MNT/file2 >> $seqres.full
+
 echo "Inject error"
 _scratch_inject_error "free_extent"
 
-echo "CoW a few blocks"
-$XFS_IO_PROG -c "pwrite -W -S 0x67 $((10 * blksz)) $((10 * blksz))" $SCRATCH_MNT/file2 >> $seqres.full
 rm $SCRATCH_MNT/file1
 sync
 
diff --git a/tests/xfs/325.out b/tests/xfs/325.out
index 4e25d2b..92027cd 100644
--- a/tests/xfs/325.out
+++ b/tests/xfs/325.out
@@ -4,8 +4,8 @@ Create files
 Check files
 d5a0ed0305c8df4180cb2bf975ecffe8  SCRATCH_MNT/file1
 d5a0ed0305c8df4180cb2bf975ecffe8  SCRATCH_MNT/file2
-Inject error
 CoW a few blocks
+Inject error
 FS should be shut down, touch will fail
 touch: cannot touch 'SCRATCH_MNT/badfs': Input/output error
 Remount to replay log
-- 
2.9.5

  parent reply	other threads:[~2018-09-06 13:13 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-06  8:39 [PATCH V2 00/16] Fix tests to work on non-4k block sized fs instances Chandan Rajendra
2018-09-06  8:39 ` [PATCH V2 01/16] Fix xfs/009 to work with 64k block size Chandan Rajendra
2018-09-06  8:39 ` [PATCH V2 02/16] xfs/050: Fix "Push past soft inode limit" case Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 03/16] Fix xfs/050 to work with 64k block size Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 04/16] Fix xfs/074 " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 05/16] Fix xfs/127 " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 06/16] Fix xfs/139 " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 07/16] Fix xfs/140 " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 08/16] Fix xfs/190 " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 09/16] Fix xfs/299 " Chandan Rajendra
2018-09-06  8:40 ` Chandan Rajendra [this message]
2018-09-06  8:40 ` [PATCH V2 11/16] Fix generic/102 " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 12/16] Fix generic/172 " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 13/16] Filter fiemap output by FS " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 14/16] Fix generic/177 to work with 64k " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 15/16] Fix generic/230 " Chandan Rajendra
2018-09-06  8:40 ` [PATCH V2 16/16] Fix generic/235 " Chandan Rajendra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180906084013.2687-11-chandan@linux.vnet.ibm.com \
    --to=chandan@linux.vnet.ibm.com \
    --cc=darrick.wong@oracle.com \
    --cc=eguan@redhat.com \
    --cc=fstests@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.