From: Gou Hao <gouhao@xxxxxxxxxxxxx> If 'bh' is found in cache, just return directly. might_sleep() is only required on slow paths. Signed-off-by: Gou Hao <gouhao@xxxxxxxxxxxxx> --- fs/buffer.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index 9e1e2add541e..e13eff504fb5 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -1371,10 +1371,11 @@ __getblk_gfp(struct block_device *bdev, sector_t block, { struct buffer_head *bh = __find_get_block(bdev, block, size); + if (bh) + return bh; + might_sleep(); - if (bh == NULL) - bh = __getblk_slow(bdev, block, size, gfp); - return bh; + return __getblk_slow(bdev, block, size, gfp); } EXPORT_SYMBOL(__getblk_gfp); -- 2.20.1