Re: mmap over nfs leads to excessive system load

From: Chuck Lever
Date: Thu Nov 17 2005 - 10:40:54 EST


Trond Myklebust wrote:
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).

'uname -a' on the client?

begin:vcard
fn:Chuck Lever
n:Lever;Charles
org:Network Appliance, Incorporated;Linux NFS Client Development
adr:535 West William Street, Suite 3100;;Center for Information Technology Integration;Ann Arbor;MI;48103-4943;USA
email;internet:cel@xxxxxxxxxxxxxx
title:Member of Technical Staff
tel;work:+1 734 763 4415
tel;fax:+1 734 763 4434
tel;home:+1 734 668 1089
x-mozilla-html:FALSE
url:http://www.monkey.org/~cel/
version:2.1
end:vcard