Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 955e47ad authored by Tim Shimmin's avatar Tim Shimmin
Browse files

[XFS] Fixes the leak in reservation space because we weren't ungranting


space for the unmount record - which becomes a problem in the freeze/thaw
scenario.

SGI-PV: 942533
SGI-Modid: xfs-linux-melb:xfs-kern:26815a

Signed-off-by: default avatarTim Shimmin <tes@sgi.com>
parent 22d91f65
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -617,7 +617,8 @@ xfs_log_unmount_write(xfs_mount_t *mp)
		reg[0].i_len  = sizeof(magic);
		XLOG_VEC_SET_TYPE(&reg[0], XLOG_REG_TYPE_UNMOUNT);

		error = xfs_log_reserve(mp, 600, 1, &tic, XFS_LOG, 0, 0);
		error = xfs_log_reserve(mp, 600, 1, &tic,
					XFS_LOG, 0, XLOG_UNMOUNT_REC_TYPE);
		if (!error) {
			/* remove inited flag */
			((xlog_ticket_t *)tic)->t_flags = 0;
@@ -655,8 +656,11 @@ xfs_log_unmount_write(xfs_mount_t *mp)
		} else {
			LOG_UNLOCK(log, s);
		}
		if (tic)
		if (tic) {
			xlog_trace_loggrant(log, tic, "unmount rec");
			xlog_ungrant_log_space(log, tic);
			xlog_state_put_ticket(log, tic);
		}
	} else {
		/*
		 * We're already in forced_shutdown mode, couldn't
+6 −0
Original line number Diff line number Diff line
@@ -502,6 +502,12 @@ extern int xlog_bread(xlog_t *, xfs_daddr_t, int, struct xfs_buf *);
#define XLOG_TRACE_SLEEP_FLUSH 3
#define XLOG_TRACE_WAKE_FLUSH  4

/*
 * Unmount record type is used as a pseudo transaction type for the ticket.
 * It's value must be outside the range of XFS_TRANS_* values.
 */
#define XLOG_UNMOUNT_REC_TYPE	(-1U)

#endif	/* __KERNEL__ */

#endif	/* __XFS_LOG_PRIV_H__ */