From: NeilBrown <neilb@cse.unsw.edu.au>

This is important for update-in-place caches which may change from being
negative to posative.

Thanks to "J.  Bruce Fields" <bfields@fieldses.org> and Olaf Kirch
<okir@suse.de>


---

 25-akpm/include/linux/sunrpc/cache.h |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff -puN include/linux/sunrpc/cache.h~knfsd-2-of-10-make-sure-cache_negative-is-cleared-when-a-cache-entry-is-updates include/linux/sunrpc/cache.h
--- 25/include/linux/sunrpc/cache.h~knfsd-2-of-10-make-sure-cache_negative-is-cleared-when-a-cache-entry-is-updates	Tue May 18 15:27:39 2004
+++ 25-akpm/include/linux/sunrpc/cache.h	Tue May 18 15:27:39 2004
@@ -193,8 +193,11 @@ RTN *FNAME ARGS										\
 					t2 = tmp; tmp = new; new = t2;			\
 				}							\
 				if (test_bit(CACHE_NEGATIVE,  &item->MEMBER.flags))	\
-					 set_bit(CACHE_NEGATIVE, &tmp->MEMBER.flags);	\
-				else {UPDATE;}						\
+					set_bit(CACHE_NEGATIVE, &tmp->MEMBER.flags);	\
+				else {							\
+					UPDATE;						\
+					clear_bit(CACHE_NEGATIVE, &tmp->MEMBER.flags);	\
+				}							\
 			}								\
 			if (set||new) write_unlock(&(DETAIL)->hash_lock);		\
 			else read_unlock(&(DETAIL)->hash_lock);				\

_