summaryrefslogtreecommitdiff
path: root/fs/jbd2/revoke.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-05-17 07:57:31 +0200
committerIngo Molnar <mingo@kernel.org>2015-05-17 07:57:31 +0200
commit75d95d84888cbd0024eb62ca7e72b3f7fe67dbdd (patch)
tree7167fa30a5c46766c10c4b9a37d7bf9373c26c6d /fs/jbd2/revoke.c
parent52648e83c9a6b9f7fc3dd272d4d10175e93aa62a (diff)
parentc0655fe9b0901a968800f56687be3c62b4cce5d2 (diff)
Merge branch 'linus' into x86/asm, to resolve conflicts
Conflicts: tools/testing/selftests/x86/Makefile tools/testing/selftests/x86/run_x86_tests.sh
Diffstat (limited to 'fs/jbd2/revoke.c')
-rw-r--r--fs/jbd2/revoke.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/fs/jbd2/revoke.c b/fs/jbd2/revoke.c
index c6cbaef2bda1..14214da80eb8 100644
--- a/fs/jbd2/revoke.c
+++ b/fs/jbd2/revoke.c
@@ -577,7 +577,7 @@ static void write_one_revoke_record(journal_t *journal,
{
int csum_size = 0;
struct buffer_head *descriptor;
- int offset;
+ int sz, offset;
journal_header_t *header;
/* If we are already aborting, this all becomes a noop. We
@@ -594,9 +594,14 @@ static void write_one_revoke_record(journal_t *journal,
if (jbd2_journal_has_csum_v2or3(journal))
csum_size = sizeof(struct jbd2_journal_revoke_tail);
+ if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
+ sz = 8;
+ else
+ sz = 4;
+
/* Make sure we have a descriptor with space left for the record */
if (descriptor) {
- if (offset >= journal->j_blocksize - csum_size) {
+ if (offset + sz > journal->j_blocksize - csum_size) {
flush_descriptor(journal, descriptor, offset, write_op);
descriptor = NULL;
}
@@ -619,16 +624,13 @@ static void write_one_revoke_record(journal_t *journal,
*descriptorp = descriptor;
}
- if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT)) {
+ if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
* ((__be64 *)(&descriptor->b_data[offset])) =
cpu_to_be64(record->blocknr);
- offset += 8;
-
- } else {
+ else
* ((__be32 *)(&descriptor->b_data[offset])) =
cpu_to_be32(record->blocknr);
- offset += 4;
- }
+ offset += sz;
*offsetp = offset;
}