diff mbox

common: ext4's data=journal mode doesn't support O_DIRECT

Message ID 1465497762-3333-1-git-send-email-tytso@mit.edu (mailing list archive)
State New, archived
Headers show

Commit Message

Theodore Ts'o June 9, 2016, 6:42 p.m. UTC
Teach _require_odirect that ext4's data=journal mode doesn't support
O_DIRECT.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
---
 common/rc | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Eryu Guan June 11, 2016, 12:20 p.m. UTC | #1
On Thu, Jun 09, 2016 at 02:42:42PM -0400, Theodore Ts'o wrote:
> Teach _require_odirect that ext4's data=journal mode doesn't support
> O_DIRECT.
> 
> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
> ---
>  common/rc | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/common/rc b/common/rc
> index 069df58..791e6e5 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1932,9 +1932,13 @@ _require_xfs_db_command()
>  # check that kernel and filesystem support direct I/O
>  _require_odirect()
>  {
> -       if [ $FSTYP = "ext4" ] &&
> -	  echo "$MOUNT_OPTIONS" | grep -q "test_dummy_encryption" ; then
> -		_notrun "ext4 encryption doesn't support O_DIRECT"
> +       if [ $FSTYP = "ext4" ] ; then
> +           if echo "$MOUNT_OPTIONS" | grep -q "test_dummy_encryption" ; then
> +	       _notrun "ext4 encryption doesn't support O_DIRECT"
> +	   fi
> +           if echo "$MOUNT_OPTIONS" | grep -q "data=journal" ; then
> +	       _notrun "ext4 data=journal mode doesn't support O_DIRECT"
> +	   fi

This hunk doesn't apply, there's no detection code for ext4 encryption
in current master. And do we need to filter out ext3 journal mode as
well?

And this patch mixed space and tab for indention.

Just curious, what's the problem running direct I/O tests on journal
mode ext4? ext4 falls back to buffered I/O in this case and I don't see
any test failures caused by it. Perhaps it'd be better to add this
information to commit log too.

Thanks,
Eryu

>         fi
>         testfile=$TEST_DIR/$$.direct
>         $XFS_IO_PROG -F -f -d -c "pwrite 0 20k" $testfile > /dev/null 2>&1
> -- 
> 2.5.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe fstests" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Theodore Ts'o June 11, 2016, 3:45 p.m. UTC | #2
On Sat, Jun 11, 2016 at 08:20:26PM +0800, Eryu Guan wrote:
> 
> This hunk doesn't apply, there's no detection code for ext4 encryption
> in current master. And do we need to filter out ext3 journal mode as
> well?

Oops, there's another patch this depends upon that I forgot to send
out this time around.  Let me fix up the spaces and tabs, and probably
just combine the two patches.

> Just curious, what's the problem running direct I/O tests on journal
> mode ext4? ext4 falls back to buffered I/O in this case and I don't see
> any test failures caused by it. Perhaps it'd be better to add this
> information to commit log too.

I'll double check but I think there was at least one dmflaky that
failed (or maybe it was just flaky) because the DIO write wasn't
really DIO, and if the device went read-only too early, the data write
wouldn't make it to the disk, and this caused the test failure.

More generally, if a particular file system mode doesn't support
Direct I/O, even if it doesn't cause a test failure, it's likely a
waste of test resources to run a test which expected that writes be
DIO when it really isn't.

					- Ted
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/common/rc b/common/rc
index 069df58..791e6e5 100644
--- a/common/rc
+++ b/common/rc
@@ -1932,9 +1932,13 @@  _require_xfs_db_command()
 # check that kernel and filesystem support direct I/O
 _require_odirect()
 {
-       if [ $FSTYP = "ext4" ] &&
-	  echo "$MOUNT_OPTIONS" | grep -q "test_dummy_encryption" ; then
-		_notrun "ext4 encryption doesn't support O_DIRECT"
+       if [ $FSTYP = "ext4" ] ; then
+           if echo "$MOUNT_OPTIONS" | grep -q "test_dummy_encryption" ; then
+	       _notrun "ext4 encryption doesn't support O_DIRECT"
+	   fi
+           if echo "$MOUNT_OPTIONS" | grep -q "data=journal" ; then
+	       _notrun "ext4 data=journal mode doesn't support O_DIRECT"
+	   fi
        fi
        testfile=$TEST_DIR/$$.direct
        $XFS_IO_PROG -F -f -d -c "pwrite 0 20k" $testfile > /dev/null 2>&1