ocfs2: Kill the last naked wait_on_buffer() for cached reads.
authorJoel Becker <joel.becker@oracle.com>
Fri, 10 Oct 2008 00:20:33 +0000 (17:20 -0700)
committerMark Fasheh <mfasheh@suse.com>
Tue, 14 Oct 2008 18:58:11 +0000 (11:58 -0700)
ocfs2's cached buffer I/O goes through ocfs2_read_block(s)().  dir.c had
a naked wait_on_buffer() to wait for some readahead, but it should
use ocfs2_read_block() instead.

Signed-off-by: Joel Becker <joel.becker@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
fs/ocfs2/dir.c

index ef2bb856f731880feaaf859b6a5eeaf37cf809a4..60be3ba1f5dc4ef540f75232698bb5df9ec60874 100644 (file)
@@ -302,14 +302,13 @@ restart:
                }
                if ((bh = bh_use[ra_ptr++]) == NULL)
                        goto next;
-               wait_on_buffer(bh);
-               if (!buffer_uptodate(bh)) {
-                       /* read error, skip block & hope for the best */
+               if (ocfs2_read_block(dir, block, &bh)) {
+                       /* read error, skip block & hope for the best.
+                        * ocfs2_read_block() has released the bh. */
                        ocfs2_error(dir->i_sb, "reading directory %llu, "
                                    "offset %lu\n",
                                    (unsigned long long)OCFS2_I(dir)->ip_blkno,
                                    block);
-                       brelse(bh);
                        goto next;
                }
                i = ocfs2_search_dirblock(bh, dir, name, namelen,