--- 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) ;