patch-1.3.60 linux/fs/buffer.c
Next file: linux/fs/exec.c
Previous file: linux/fs/Makefile
Back to the patch index
Back to the overall index
-  Lines: 23
 -  Date:
Wed Feb  7 08:55:39 1996
 -  Orig file: 
v1.3.59/linux/fs/buffer.c
 -  Orig date: 
Fri Jan 26 01:37:07 1996
 
diff -u --recursive --new-file v1.3.59/linux/fs/buffer.c linux/fs/buffer.c
@@ -1228,7 +1228,13 @@
 	int *p, nr[PAGE_SIZE/512];
 	int i;
 
+	address = page_address(page);
+	page->count++;
 	wait_on_page(page);
+	if (page->uptodate) {
+		free_page(address);
+		return 0;
+	}
 	page->locked = 1;
 	
 	i = PAGE_SIZE >> inode->i_sb->s_blocksize_bits;
@@ -1242,8 +1248,6 @@
 	} while (i > 0);
 
 	/* IO start */
-	page->count++;
-	address = page_address(page);
 	brw_page(READ, address, inode->i_dev, nr, inode->i_sb->s_blocksize, 1);
 	free_page(address);
 	return 0;
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