Commit 297de318 authored by Andreas Gruenbacher's avatar Andreas Gruenbacher
Browse files

gfs2: Use a tighter bound in gfs2_trans_begin



Use a tighter bound for the number of blocks required by transactions in
gfs2_trans_begin: in the worst case, we'll have mixed data and metadata,
so we'll need a log desciptor for each type.

Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
parent 5ae8fff8
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -54,8 +54,14 @@ int __gfs2_trans_begin(struct gfs2_trans *tr, struct gfs2_sbd *sdp,
	tr->tr_blocks = blocks;
	tr->tr_revokes = revokes;
	tr->tr_reserved = 1;
	if (blocks)
		tr->tr_reserved += 6 + blocks;
	if (blocks) {
		/*
		 * The reserved blocks are either used for data or metadata.
		 * We can have mixed data and metadata, each with its own log
		 * descriptor block; see calc_reserved().
		 */
		tr->tr_reserved += blocks + 1 + DIV_ROUND_UP(blocks - 1, databuf_limit(sdp));
	}
	if (revokes)
		tr->tr_reserved += gfs2_struct2blk(sdp, revokes);
	INIT_LIST_HEAD(&tr->tr_databuf);