]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/ext3/dir.c
[POWERPC] Limit range of __init_ref_ok somewhat
[linux-2.6-omap-h63xx.git] / fs / ext3 / dir.c
index 665adee99b311fbfce6ada8fb94ee163b4969bc4..c00723a99f44f1aa6cb808a1e3ffd001505e67a2 100644 (file)
@@ -25,7 +25,6 @@
 #include <linux/jbd.h>
 #include <linux/ext3_fs.h>
 #include <linux/buffer_head.h>
-#include <linux/smp_lock.h>
 #include <linux/slab.h>
 #include <linux/rbtree.h>
 
@@ -137,12 +136,14 @@ static int ext3_readdir(struct file * filp,
                err = ext3_get_blocks_handle(NULL, inode, blk, 1,
                                                &map_bh, 0, 0);
                if (err > 0) {
-                       page_cache_readahead(sb->s_bdev->bd_inode->i_mapping,
-                               &filp->f_ra,
-                               filp,
-                               map_bh.b_blocknr >>
-                                       (PAGE_CACHE_SHIFT - inode->i_blkbits),
-                               1);
+                       pgoff_t index = map_bh.b_blocknr >>
+                                       (PAGE_CACHE_SHIFT - inode->i_blkbits);
+                       if (!ra_has_index(&filp->f_ra, index))
+                               page_cache_sync_readahead(
+                                       sb->s_bdev->bd_inode->i_mapping,
+                                       &filp->f_ra, filp,
+                                       index, 1);
+                       filp->f_ra.prev_index = index;
                        bh = ext3_bread(NULL, inode, blk, 0, &err);
                }