From bb19140dcf98951dfadf2bf5cd86d7105be03ac5 Mon Sep 17 00:00:00 2001 From: Bob Peterson Date: Tue, 14 May 2013 13:04:29 -0400 Subject: [PATCH] --- yaml --- r: 376190 b: refs/heads/master c: af21ca8ed50f01c5278c5ded6dad6f05e8a5d2e4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/gfs2/rgrp.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a067c407e9e9..a7f97d46aec4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 37f715774e2dd9ae521334dbbc3af63becd47adb +refs/heads/master: af21ca8ed50f01c5278c5ded6dad6f05e8a5d2e4 diff --git a/trunk/fs/gfs2/rgrp.c b/trunk/fs/gfs2/rgrp.c index 0c5a575b513e..5232525934ae 100644 --- a/trunk/fs/gfs2/rgrp.c +++ b/trunk/fs/gfs2/rgrp.c @@ -1401,9 +1401,14 @@ static void rg_mblk_search(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip, u32 extlen; u32 free_blocks = rgd->rd_free_clone - rgd->rd_reserved; int ret; + struct inode *inode = &ip->i_inode; - extlen = max_t(u32, atomic_read(&rs->rs_sizehint), requested); - extlen = clamp(extlen, RGRP_RSRV_MINBLKS, free_blocks); + if (S_ISDIR(inode->i_mode)) + extlen = 1; + else { + extlen = max_t(u32, atomic_read(&rs->rs_sizehint), requested); + extlen = clamp(extlen, RGRP_RSRV_MINBLKS, free_blocks); + } if ((rgd->rd_free_clone < rgd->rd_reserved) || (free_blocks < extlen)) return;