xfs
[Top] [All Lists]

Re: direct-IO writes strange behavior

To: Nathan Scott <nathans@xxxxxxx>
Subject: Re: direct-IO writes strange behavior
From: Alberto Nava <beto@xxxxxxxxxxx>
Date: Wed, 26 Nov 2003 16:42:37 -0800
Cc: Steve Lord <lord@xxxxxxx>, linux-xfs@xxxxxxxxxxx
In-reply-to: <20031127003056.GB658@frodo>
References: <3FBECF7E.6010509@kasenna.com> <3FBFEF6A.3000609@kasenna.com> <3FC0EFEA.5070108@xfs.org> <20031127003056.GB658@frodo>
Sender: linux-xfs-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624
Nathan Scott wrote:

Hi Alberto,

I spent some time this morning looking into this.  Firstly, the
fs/direct-io.c code has moved on from what you were looking at
in test9 -- I've been testing using test11 this morning and the
code snippet you've pasted above is no longer the same (Andrews
comment above has modified - ENOTBLK is never returned now).

Secondly, I cannot reproduce the behaviour you've described --
direct IO into both unwritten and newly allocated extents works
correctly, and using your test case I got nice big 512k chunks
every time.  There have been no changes in XFS in this area that
could have affected this, so I wonder what led you to suspect
the buffer was unmapped (your first "XXXXXX" above) originally?

Did you put a printk in there that was being triggered?  (I did,
and it didn't, using -test11).  I also put the printks into XFS
as I described in my previous mail, and we are definately giving
large IOs back to the generic direct IO code, for both cases -
pre-allocated and and not-pre-allocated cases.

thanks for looking into this. Yes I had some printk on the "XXXXX" lines, plus I've added some traces to test9 that allow you to get
information about BIO that are submitted to the scheduler. This showed
a 4k vs 512k requests.


I'll try to reproduce it with test11. It might take me some
time as I need to merge my trace gathering code.

Thanks
beto


Any chance you could retry your tests on the current kernel just to verify that there is no problem here for me?

thanks!




<Prev in Thread] Current Thread [Next in Thread>