On Wed, 2005-11-16 at 14:39 -0800, Kenny Simpson wrote:
--- Trond Myklebust <trond.myklebust@xxxxxxxxxx> wrote:
I'm getting lost here. Please could you spell out the testcases that are
not working.
I've redone my test cases and have confirmed that O_DIRECT with pwrite64 triggers the bad
condition.
The cases that are fine are:
pwrite64
ftruncate with O_DIRECT
ftruncate
Also, when the system is in this state, if I try to 'ls' the file,
the 'ls' process becomes stuck in state D in sync_page. stracing the 'ls'
shows it is in a call to stat64.
-Kenny
Chuck, can you take a look at this?
Kenny is seeing a hang when using pwrite64() on an O_DIRECT file
and the file size exceeds 4Gb. Server is a NetApp filer w/ NFSv3.
I had a quick look at nfs_file_direct_write(), and among other things,
it would appear that it is not doing any of the usual overflow checks on
*pos and the count size (see generic_write_checks()). In particular,
checks are missing against overflow vs. MAX_NON_LFS if O_LARGEFILE is
not set (and also against overflow vs. s_maxbytes, but that is less
relevant here).