|
@@ -1169,6 +1169,7 @@ static int do_grow(struct inode *inode, u64 size)
|
|
|
struct buffer_head *dibh;
|
|
|
struct gfs2_qadata *qa = NULL;
|
|
|
int error;
|
|
|
+ int unstuff = 0;
|
|
|
|
|
|
if (gfs2_is_stuffed(ip) &&
|
|
|
(size > (sdp->sd_sb.sb_bsize - sizeof(struct gfs2_dinode)))) {
|
|
@@ -1183,13 +1184,14 @@ static int do_grow(struct inode *inode, u64 size)
|
|
|
error = gfs2_inplace_reserve(ip, 1);
|
|
|
if (error)
|
|
|
goto do_grow_qunlock;
|
|
|
+ unstuff = 1;
|
|
|
}
|
|
|
|
|
|
error = gfs2_trans_begin(sdp, RES_DINODE + RES_STATFS + RES_RG_BIT, 0);
|
|
|
if (error)
|
|
|
goto do_grow_release;
|
|
|
|
|
|
- if (qa) {
|
|
|
+ if (unstuff) {
|
|
|
error = gfs2_unstuff_dinode(ip, NULL);
|
|
|
if (error)
|
|
|
goto do_end_trans;
|
|
@@ -1208,7 +1210,7 @@ static int do_grow(struct inode *inode, u64 size)
|
|
|
do_end_trans:
|
|
|
gfs2_trans_end(sdp);
|
|
|
do_grow_release:
|
|
|
- if (qa) {
|
|
|
+ if (unstuff) {
|
|
|
gfs2_inplace_release(ip);
|
|
|
do_grow_qunlock:
|
|
|
gfs2_quota_unlock(ip);
|