diff options
-rw-r--r-- | fs/gfs2/dir.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c index 91441171bf25..946b6f88939e 100644 --- a/fs/gfs2/dir.c +++ b/fs/gfs2/dir.c | |||
@@ -1378,12 +1378,14 @@ out: | |||
1378 | return error; | 1378 | return error; |
1379 | } | 1379 | } |
1380 | 1380 | ||
1381 | /* gfs2_dir_readahead - Issue read-ahead requests for leaf blocks. | 1381 | /** |
1382 | * gfs2_dir_readahead - Issue read-ahead requests for leaf blocks. | ||
1382 | * | 1383 | * |
1383 | * Note: we can't calculate each index like dir_e_read can because we don't | 1384 | * Note: we can't calculate each index like dir_e_read can because we don't |
1384 | * have the leaf, and therefore we don't have the depth, and therefore we | 1385 | * have the leaf, and therefore we don't have the depth, and therefore we |
1385 | * don't have the length. So we have to just read enough ahead to make up | 1386 | * don't have the length. So we have to just read enough ahead to make up |
1386 | * for the loss of information. */ | 1387 | * for the loss of information. |
1388 | */ | ||
1387 | static void gfs2_dir_readahead(struct inode *inode, unsigned hsize, u32 index, | 1389 | static void gfs2_dir_readahead(struct inode *inode, unsigned hsize, u32 index, |
1388 | struct file_ra_state *f_ra) | 1390 | struct file_ra_state *f_ra) |
1389 | { | 1391 | { |
@@ -1394,7 +1396,7 @@ static void gfs2_dir_readahead(struct inode *inode, unsigned hsize, u32 index, | |||
1394 | unsigned count; | 1396 | unsigned count; |
1395 | 1397 | ||
1396 | /* First check if we've already read-ahead for the whole range. */ | 1398 | /* First check if we've already read-ahead for the whole range. */ |
1397 | if (!f_ra || index + MAX_RA_BLOCKS < f_ra->start) | 1399 | if (index + MAX_RA_BLOCKS < f_ra->start) |
1398 | return; | 1400 | return; |
1399 | 1401 | ||
1400 | f_ra->start = max((pgoff_t)index, f_ra->start); | 1402 | f_ra->start = max((pgoff_t)index, f_ra->start); |
@@ -1448,7 +1450,7 @@ static int dir_e_read(struct inode *inode, u64 *offset, void *opaque, | |||
1448 | hash = gfs2_dir_offset2hash(*offset); | 1450 | hash = gfs2_dir_offset2hash(*offset); |
1449 | index = hash >> (32 - dip->i_depth); | 1451 | index = hash >> (32 - dip->i_depth); |
1450 | 1452 | ||
1451 | if (f_ra && dip->i_hash_cache == NULL) | 1453 | if (dip->i_hash_cache == NULL) |
1452 | f_ra->start = 0; | 1454 | f_ra->start = 0; |
1453 | lp = gfs2_dir_get_hash_table(dip); | 1455 | lp = gfs2_dir_get_hash_table(dip); |
1454 | if (IS_ERR(lp)) | 1456 | if (IS_ERR(lp)) |