GFS2: Reserve journal space for quota change in do_grow
If a GFS2 file system is mounted with quotas and a file is grown in such a way that its free blocks for the allocation are represented in a secondary bitmap, GFS2 ran out of blocks in the transaction. That resulted in "fatal: assertion "tr->tr_num_buf <= tr->tr_blocks". This patch reserves extra blocks for the quota change so the transaction has enough space. Signed-off-by: Bob Peterson <rpeterso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
Родитель
6a98c333ed
Коммит
a01aedfe21
|
@ -1232,7 +1232,9 @@ static int do_grow(struct inode *inode, u64 size)
|
|||
unstuff = 1;
|
||||
}
|
||||
|
||||
error = gfs2_trans_begin(sdp, RES_DINODE + RES_STATFS + RES_RG_BIT, 0);
|
||||
error = gfs2_trans_begin(sdp, RES_DINODE + RES_STATFS + RES_RG_BIT +
|
||||
(sdp->sd_args.ar_quota == GFS2_QUOTA_OFF ?
|
||||
0 : RES_QUOTA), 0);
|
||||
if (error)
|
||||
goto do_grow_release;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче