--- linux-2.5.3-pre3/fs/reiserfs/inode.c.orig	Wed Jan 23 20:15:38 2002
+++ linux-2.5.3-pre3/fs/reiserfs/inode.c	Wed Jan 23 20:16:19 2002
@@ -269,7 +269,9 @@
 	pathrelse (&path);
         if (p)
             kunmap(bh_result->b_page) ;
-	if ((args & GET_BLOCK_NO_HOLE)) {
+	// We do not return -ENOENT if there is a hole but page is uptodate, because it means
+	// That there is some MMAPED data associated with it that is yet to be written to disk.
+	if ((args & GET_BLOCK_NO_HOLE) && !Page_Uptodate(bh_result->b_page) ) {
 	    return -ENOENT ;
 	}
         return 0 ;
@@ -288,9 +290,13 @@
 	ret = 0 ;
 	if (blocknr) {
 		map_bh(bh_result, inode->i_sb, blocknr);
-	} else if ((args & GET_BLOCK_NO_HOLE)) {
+	} else 
+	    // We do not return -ENOENT if there is a hole but page is uptodate, because it means
+	    // That there is some MMAPED data associated with it that is yet to  be written to disk.
+	    if ((args & GET_BLOCK_NO_HOLE) && !Page_Uptodate(bh_result->b_page) ) {
 	    ret = -ENOENT ;
-	}
+	    }
+
 	pathrelse (&path);
         if (p)
             kunmap(bh_result->b_page) ;
