[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: Tim Shimmin <tes@sgi.com>
This commit is contained in:
parent
22d91f65d5
commit
955e47ad28
2 changed files with 12 additions and 2 deletions
fs/xfs
|
@ -617,7 +617,8 @@ xfs_log_unmount_write(xfs_mount_t *mp)
|
||||||
reg[0].i_len = sizeof(magic);
|
reg[0].i_len = sizeof(magic);
|
||||||
XLOG_VEC_SET_TYPE(®[0], XLOG_REG_TYPE_UNMOUNT);
|
XLOG_VEC_SET_TYPE(®[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) {
|
if (!error) {
|
||||||
/* remove inited flag */
|
/* remove inited flag */
|
||||||
((xlog_ticket_t *)tic)->t_flags = 0;
|
((xlog_ticket_t *)tic)->t_flags = 0;
|
||||||
|
@ -655,8 +656,11 @@ xfs_log_unmount_write(xfs_mount_t *mp)
|
||||||
} else {
|
} else {
|
||||||
LOG_UNLOCK(log, s);
|
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);
|
xlog_state_put_ticket(log, tic);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* We're already in forced_shutdown mode, couldn't
|
* We're already in forced_shutdown mode, couldn't
|
||||||
|
|
|
@ -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_SLEEP_FLUSH 3
|
||||||
#define XLOG_TRACE_WAKE_FLUSH 4
|
#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 /* __KERNEL__ */
|
||||||
|
|
||||||
#endif /* __XFS_LOG_PRIV_H__ */
|
#endif /* __XFS_LOG_PRIV_H__ */
|
||||||
|
|
Loading…
Reference in a new issue