bh_submit_read() is responsible for unlock bh on endio.  In addition,
we need to use bh_uptodate_or_lock() to avoid races.
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
        struct buffer_head *bh = sb_getblk(sb, block);
        if (!bh)
                return NULL;
-
-       if (bitmap_uptodate(bh))
-               return bh;
-
-       lock_buffer(bh);
-       if (bh_submit_read(bh) < 0) {
-               unlock_buffer(bh);
-               brelse(bh);
-               return NULL;
+       if (!bh_uptodate_or_lock(bh)) {
+               if (bh_submit_read(bh) < 0) {
+                       brelse(bh);
+                       return NULL;
+               }
        }
-       unlock_buffer(bh);
 
        return bh;
 }