patch-1.3.92 linux/fs/nfs/bio.c

Next file: linux/fs/nfs/nfsroot.c
Previous file: linux/fs/minix/inode.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.91/linux/fs/nfs/bio.c linux/fs/nfs/bio.c
@@ -63,8 +63,12 @@
 				NFS_SERVER(inode)->hostname,
 				inode->i_dev, inode->i_ino,
 				pos, rsize, buf, result);
+		/*
+		 * Even if we had a partial success we can't mark the page
+		 * cache valid.
+		 */
 		if (result < 0)
-			break;
+			goto io_error;
 		refresh = 1;
 		count -= result;
 		pos += result;
@@ -74,11 +78,12 @@
 	} while (count);
 
 	memset(buf, 0, count);
-	if (refresh) {
+	set_bit(PG_uptodate, &page->flags);
+	result = 0;
+
+io_error:
+	if (refresh)
 		nfs_refresh_inode(inode, &fattr);
-		result = 0;
-		set_bit(PG_uptodate, &page->flags);
-	}
 	clear_bit(PG_locked, &page->flags);
 	wake_up(&page->wait);
 	return result;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this