[XFS] Ensure that 2 GiB xfs logs work properly.
We found this while experimenting with 2GiB xfs logs. The previous code never assumed that xfs logs would ever get so large. SGI-PV: 981502 SGI-Modid: xfs-linux-melb:xfs-kern:31058a Signed-off-by: Michael Nishimoto <miken@agami.com> Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:
committed by
Niv Sardi
parent
b41759cf11
commit
d729eae893
@@ -226,20 +226,24 @@ xlog_grant_sub_space(struct log *log, int bytes)
|
|||||||
static void
|
static void
|
||||||
xlog_grant_add_space_write(struct log *log, int bytes)
|
xlog_grant_add_space_write(struct log *log, int bytes)
|
||||||
{
|
{
|
||||||
log->l_grant_write_bytes += bytes;
|
int tmp = log->l_logsize - log->l_grant_write_bytes;
|
||||||
if (log->l_grant_write_bytes > log->l_logsize) {
|
if (tmp > bytes)
|
||||||
log->l_grant_write_bytes -= log->l_logsize;
|
log->l_grant_write_bytes += bytes;
|
||||||
|
else {
|
||||||
log->l_grant_write_cycle++;
|
log->l_grant_write_cycle++;
|
||||||
|
log->l_grant_write_bytes = bytes - tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xlog_grant_add_space_reserve(struct log *log, int bytes)
|
xlog_grant_add_space_reserve(struct log *log, int bytes)
|
||||||
{
|
{
|
||||||
log->l_grant_reserve_bytes += bytes;
|
int tmp = log->l_logsize - log->l_grant_reserve_bytes;
|
||||||
if (log->l_grant_reserve_bytes > log->l_logsize) {
|
if (tmp > bytes)
|
||||||
log->l_grant_reserve_bytes -= log->l_logsize;
|
log->l_grant_reserve_bytes += bytes;
|
||||||
|
else {
|
||||||
log->l_grant_reserve_cycle++;
|
log->l_grant_reserve_cycle++;
|
||||||
|
log->l_grant_reserve_bytes = bytes - tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user