diff options
-rw-r--r-- | fs/gfs2/rgrp.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 0c5a575b513e..5232525934ae 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c | |||
@@ -1401,9 +1401,14 @@ static void rg_mblk_search(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip, | |||
1401 | u32 extlen; | 1401 | u32 extlen; |
1402 | u32 free_blocks = rgd->rd_free_clone - rgd->rd_reserved; | 1402 | u32 free_blocks = rgd->rd_free_clone - rgd->rd_reserved; |
1403 | int ret; | 1403 | int ret; |
1404 | struct inode *inode = &ip->i_inode; | ||
1404 | 1405 | ||
1405 | extlen = max_t(u32, atomic_read(&rs->rs_sizehint), requested); | 1406 | if (S_ISDIR(inode->i_mode)) |
1406 | extlen = clamp(extlen, RGRP_RSRV_MINBLKS, free_blocks); | 1407 | extlen = 1; |
1408 | else { | ||
1409 | extlen = max_t(u32, atomic_read(&rs->rs_sizehint), requested); | ||
1410 | extlen = clamp(extlen, RGRP_RSRV_MINBLKS, free_blocks); | ||
1411 | } | ||
1407 | if ((rgd->rd_free_clone < rgd->rd_reserved) || (free_blocks < extlen)) | 1412 | if ((rgd->rd_free_clone < rgd->rd_reserved) || (free_blocks < extlen)) |
1408 | return; | 1413 | return; |
1409 | 1414 | ||