diff options
author | Michael Nishimoto <miken@agami.com> | 2008-05-19 02:34:20 -0400 |
---|---|---|
committer | Niv Sardi <xaiki@debian.org> | 2008-07-28 02:58:11 -0400 |
commit | d729eae8933cb3eb8edf1446532c178b66b293a9 (patch) | |
tree | 6cabfe6889c740a12c663dc01152c7d8cfe867e5 /fs/xfs/xfs_log.c | |
parent | b41759cf11c84ad0d569c0ef200c449ad2cc24e3 (diff) |
[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>
Diffstat (limited to 'fs/xfs/xfs_log.c')
-rw-r--r-- | fs/xfs/xfs_log.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 16a01abe2490..6195cc880101 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c | |||
@@ -226,20 +226,24 @@ xlog_grant_sub_space(struct log *log, int bytes) | |||
226 | static void | 226 | static void |
227 | xlog_grant_add_space_write(struct log *log, int bytes) | 227 | xlog_grant_add_space_write(struct log *log, int bytes) |
228 | { | 228 | { |
229 | log->l_grant_write_bytes += bytes; | 229 | int tmp = log->l_logsize - log->l_grant_write_bytes; |
230 | if (log->l_grant_write_bytes > log->l_logsize) { | 230 | if (tmp > bytes) |
231 | log->l_grant_write_bytes -= log->l_logsize; | 231 | log->l_grant_write_bytes += bytes; |
232 | else { | ||
232 | log->l_grant_write_cycle++; | 233 | log->l_grant_write_cycle++; |
234 | log->l_grant_write_bytes = bytes - tmp; | ||
233 | } | 235 | } |
234 | } | 236 | } |
235 | 237 | ||
236 | static void | 238 | static void |
237 | xlog_grant_add_space_reserve(struct log *log, int bytes) | 239 | xlog_grant_add_space_reserve(struct log *log, int bytes) |
238 | { | 240 | { |
239 | log->l_grant_reserve_bytes += bytes; | 241 | int tmp = log->l_logsize - log->l_grant_reserve_bytes; |
240 | if (log->l_grant_reserve_bytes > log->l_logsize) { | 242 | if (tmp > bytes) |
241 | log->l_grant_reserve_bytes -= log->l_logsize; | 243 | log->l_grant_reserve_bytes += bytes; |
244 | else { | ||
242 | log->l_grant_reserve_cycle++; | 245 | log->l_grant_reserve_cycle++; |
246 | log->l_grant_reserve_bytes = bytes - tmp; | ||
243 | } | 247 | } |
244 | } | 248 | } |
245 | 249 | ||