diff options
Diffstat (limited to 'fs/xfs/xfs_log_recover.c')
-rw-r--r-- | fs/xfs/xfs_log_recover.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index 93f03ec17eec..d9e4d3c3991a 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c | |||
@@ -2097,6 +2097,17 @@ xlog_recover_do_reg_buffer( | |||
2097 | ((uint)bit << XFS_BLF_SHIFT) + (nbits << XFS_BLF_SHIFT)); | 2097 | ((uint)bit << XFS_BLF_SHIFT) + (nbits << XFS_BLF_SHIFT)); |
2098 | 2098 | ||
2099 | /* | 2099 | /* |
2100 | * The dirty regions logged in the buffer, even though | ||
2101 | * contiguous, may span multiple chunks. This is because the | ||
2102 | * dirty region may span a physical page boundary in a buffer | ||
2103 | * and hence be split into two separate vectors for writing into | ||
2104 | * the log. Hence we need to trim nbits back to the length of | ||
2105 | * the current region being copied out of the log. | ||
2106 | */ | ||
2107 | if (item->ri_buf[i].i_len < (nbits << XFS_BLF_SHIFT)) | ||
2108 | nbits = item->ri_buf[i].i_len >> XFS_BLF_SHIFT; | ||
2109 | |||
2110 | /* | ||
2100 | * Do a sanity check if this is a dquot buffer. Just checking | 2111 | * Do a sanity check if this is a dquot buffer. Just checking |
2101 | * the first dquot in the buffer should do. XXXThis is | 2112 | * the first dquot in the buffer should do. XXXThis is |
2102 | * probably a good thing to do for other buf types also. | 2113 | * probably a good thing to do for other buf types also. |