From: "J. Bruce Fields" <bfields@fieldses.org>
To: Nix <nix@esperi.org.uk>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [2.6.22.6] nfsd: fh_verify() `malloc failure' with lots of free memory leads to NFS hang
Date: Mon, 17 Sep 2007 21:12:57 -0400 [thread overview]
Message-ID: <20070918011257.GC2443@fieldses.org> (raw)
In-Reply-To: <87zlzkkfvk.fsf@hades.wkstn.nix>
On Tue, Sep 18, 2007 at 12:54:07AM +0100, Nix wrote:
> The code which calls new_do_write() looks like this:
>
> ,----[ libio/fileops.c:_IO_new_file_xsputn() ]
> | if (do_write)
> | {
> | count = new_do_write (f, s, do_write);
> | to_do -= count;
> | if (count < do_write)
> | return n - to_do;
> | }
> `----
>
> This code handles partial writes followed by errors by returning a
> suitable nonzero value, and immediate errors by returning -1.
>
> In either case the buffer will have been filled as much as possible by
> that point, and will still be filled when (vf)printf() is next called.
OK, I'm a little lost at this point (what's n? What's to_do?), but I'll
take your word for it.
I'd be kinda curious when exactly the behavior changed and why.
Also I suppose we should check which version of nfs-utils that fix is in
and make sure distributions are getting the fixed nfs-utils before they
get the new libc, or we're going to see this bug a lot....
> This behaviour is, IIRC, mandated by the C Standard: I can find no
> reference in the Standard to streams being flushed on error, only
> on fclose(), fflush(), or program termination.
OK!
Let me know if the problem's fixed.
--b.
next prev parent reply other threads:[~2007-09-18 1:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-17 22:23 [2.6.22.6] nfsd: fh_verify() `malloc failure' with lots of free memory leads to NFS hang Nix
2007-09-17 22:36 ` J. Bruce Fields
2007-09-17 23:54 ` Nix
2007-09-18 1:12 ` J. Bruce Fields [this message]
2007-09-18 6:18 ` Nix
2007-09-21 18:46 ` Nix
2007-09-21 21:13 ` J. Bruce Fields
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=20070918011257.GC2443@fieldses.org \
--to=bfields@fieldses.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nix@esperi.org.uk \
/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.