 fs/reiser4/plugin/file/file.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

Index: linux-2.6.16/fs/reiser4/plugin/file/file.c
===================================================================
--- linux-2.6.16.orig/fs/reiser4/plugin/file/file.c
+++ linux-2.6.16/fs/reiser4/plugin/file/file.c
@@ -1633,14 +1633,18 @@ static size_t read_file(hint_t * hint, s
 			/* error happened */
 			break;
 
-		if (coord->between != AT_UNIT)
+		if (coord->between != AT_UNIT) {
 			/* there were no items corresponding to given offset */
+			done_lh(hint->ext_coord.lh);
 			break;
+		}
 
 		loaded = coord->node;
 		result = zload(loaded);
-		if (unlikely(result))
+		if (unlikely(result)) {
+			done_lh(hint->ext_coord.lh);
 			break;
+		}
 
 		if (hint->ext_coord.valid == 0)
 			validate_extended_coord(&hint->ext_coord,
@@ -1725,13 +1729,15 @@ ssize_t read_unix_file(struct file *file
 			left = size - *off;
 
 		/* faultin user page */
-		result = fault_in_pages_writeable(buf, left > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE : left);
-		if (result) {
+		if(fault_in_pages_writeable(buf, left > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE : left)) {
 			drop_nonexclusive_access(uf_info);
-			return RETERR(-EFAULT);
+			result = RETERR(-EFAULT);
+			break;
 		}
 
-		read = read_file(hint, file, buf, left, off);
+		read = read_file(hint, file, buf,
+				 left > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE : left,
+				 off);
 
  		drop_nonexclusive_access(uf_info);
 
@@ -1748,6 +1754,7 @@ ssize_t read_unix_file(struct file *file
 		count += read;
 	}
 	save_file_hint(file, hint);
+	done_lh(&hint->lh);
 	kfree(hint);
 
 	if (count) {
Index: linux-2.6.16/fs/reiser4/as_ops.c
===================================================================
--- linux-2.6.16.orig/fs/reiser4/as_ops.c
+++ linux-2.6.16/fs/reiser4/as_ops.c
@@ -350,6 +350,9 @@ int reiser4_releasepage(struct page *pag
 	if (PageDirty(page))
 		return 0;
 
+	if (page_count(page) > 3)
+		return 0;
+
 	/* releasable() needs jnode lock, because it looks at the jnode fields
 	 * and we need jload_lock here to avoid races with jload(). */
 	spin_lock_jnode(node);
