gfs2: take jdata unstuff into account in do_grow
authorBob Peterson <rpeterso@redhat.com>
Tue, 18 Dec 2018 14:29:32 +0000 (08:29 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2019 14:37:32 +0000 (15:37 +0100)
[ Upstream commit bc0205612bbd4dd4026d4ba6287f5643c37366ec ]

Before this patch, function do_grow would not reserve enough journal
blocks in the transaction to unstuff jdata files while growing them.
This patch adds the logic to add one more block if the file to grow
is jdata.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/gfs2/bmap.c

index 09432b25fe9b8184371431c44eb37274d45a1e0d..b3a1b16d4e3e38f805ac19ee00df6019e48e5228 100644 (file)
@@ -1445,6 +1445,8 @@ static int do_grow(struct inode *inode, u64 size)
        }
 
        error = gfs2_trans_begin(sdp, RES_DINODE + RES_STATFS + RES_RG_BIT +
+                                (unstuff &&
+                                 gfs2_is_jdata(ip) ? RES_JDATA : 0) +
                                 (sdp->sd_args.ar_quota == GFS2_QUOTA_OFF ?
                                  0 : RES_QUOTA), 0);
        if (error)