diff --git a/fs/buffer.c b/fs/buffer.c
index 80e96c1fcd333d0ad85681374f56b9cd4c3ca14d..edd11859456557066747c7f1055707c2fcf7ec4f 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -1465,7 +1465,9 @@ EXPORT_SYMBOL(__getblk_gfp);
  */
 void __breadahead(struct block_device *bdev, sector_t block, unsigned size)
 {
-	struct buffer_head *bh = __getblk(bdev, block, size);
+	struct buffer_head *bh = bdev_getblk(bdev, block, size,
+			GFP_NOWAIT | __GFP_MOVABLE);
+
 	if (likely(bh)) {
 		bh_readahead(bh, REQ_RAHEAD);
 		brelse(bh);