login
Header Space

 
 

NFS infinite loop in filemap_fault()

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <trond.myklebust@...>, <npiggin@...>
Cc: <linux-kernel@...>, <linux-fsdevel@...>
Date: Wednesday, May 7, 2008 - 4:34 pm

Page fault on NFS apparently goes into an infinite loop if the read on
the server fails.

I don't understand the NFS readpage code, but the filemap_fault() code
looks somewhat suspicious:

	/*
	 * Umm, take care of errors if the page isn't up-to-date.
	 * Try to re-read it _once_. We do this synchronously,
	 * because there really aren't any performance issues here
	 * and we need to check for errors.
	 */
	ClearPageError(page);
	error = mapping->a_ops->readpage(file, page);
	page_cache_release(page);

	if (!error || error == AOP_TRUNCATED_PAGE)
		goto retry_find;

The comment doesn't seem to match what the it actually does: if
->readpage() is asynchronous, then this will just repeat everything,
without any guarantee that it will re-read once.

What am I missing?

Miklos
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
NFS infinite loop in filemap_fault(), Miklos Szeredi, (Wed May 7, 4:34 pm)
Re: NFS infinite loop in filemap_fault(), Miklos Szeredi, (Thu May 8, 2:47 am)
Re: NFS infinite loop in filemap_fault(), Josef Bacik, (Thu May 8, 9:07 am)
Re: NFS infinite loop in filemap_fault(), Miklos Szeredi, (Thu May 8, 2:42 pm)
Re: NFS infinite loop in filemap_fault(), Josef Bacik, (Thu May 8, 2:29 pm)
speck-geostationary