On Sun, Aug 05, 2007 at 08:53:08PM +0200, Steinar H. Gunderson wrote:
> Hm. I'm trying to reproduce it now, and I can perhaps do it once out of ten.
> Sort of hard to track down...

Finally!

I got it to be weird while I was stracing it. From there it was only a
matter of remembering the following commit:

| From dd087896285da9e160e13ee9f7d75381b67895e3 Mon Sep 17 00:00:00 2001
| From: J. Bruce Fields <[EMAIL PROTECTED]>
| Date: Thu, 26 Jul 2007 16:30:46 -0400
| Subject: [PATCH] Use __fpurge to ensure single-line writes to cache files
| 
| On a recent Debian/Sid machine, I saw libc retrying stdio writes that
| returned write errors.  The result is that if an export downcall returns
| an error (which it can in normal operation, since it currently
| (incorrectly) returns -ENOENT on any negative downcall), then subsequent
| downcalls will write multiple lines (including the original line that
| received the error).
| 
| The result is that the server fails to respond to any rpc call that
| refers to an unexported mount point (such as a readdir of a directory
| containing such a mountpoint), so client commands hang.
| 
| I don't know whether this libc behavior is correct or expected, but it
| seems safest to add the __fpurge() (suggested by Neil) to ensure data is
| thrown away.
| 
| Signed-off-by: "J. Bruce Fields" <[EMAIL PROTECTED]>
| Signed-off-by: Neil Brown <[EMAIL PROTECTED]>

I uploaded the current git version to unstable earlier today, and it contains
this fix. It sounds like it should fix your issue -- could you please give it
a shot?

/* Steinar */
-- 
Homepage: http://www.sesse.net/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to