mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
jbd2: clean up feature test macros with predicate functions
Create separate predicate functions to test/set/clear feature flags, thereby replacing the wordy old macros. Furthermore, clean out the places where we open-coded feature tests. Signed-off-by: Darrick J. Wong <[email protected]> Signed-off-by: Theodore Ts'o <[email protected]>
This commit is contained in:
parent
e2b911c535
commit
56316a0d28
5 changed files with 91 additions and 36 deletions
|
|
@ -142,8 +142,7 @@ static int journal_submit_commit_record(journal_t *journal,
|
|||
tmp->h_commit_sec = cpu_to_be64(now.tv_sec);
|
||||
tmp->h_commit_nsec = cpu_to_be32(now.tv_nsec);
|
||||
|
||||
if (JBD2_HAS_COMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_COMPAT_CHECKSUM)) {
|
||||
if (jbd2_has_feature_checksum(journal)) {
|
||||
tmp->h_chksum_type = JBD2_CRC32_CHKSUM;
|
||||
tmp->h_chksum_size = JBD2_CRC32_CHKSUM_SIZE;
|
||||
tmp->h_chksum[0] = cpu_to_be32(crc32_sum);
|
||||
|
|
@ -157,8 +156,7 @@ static int journal_submit_commit_record(journal_t *journal,
|
|||
bh->b_end_io = journal_end_buffer_io_sync;
|
||||
|
||||
if (journal->j_flags & JBD2_BARRIER &&
|
||||
!JBD2_HAS_INCOMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT))
|
||||
!jbd2_has_feature_async_commit(journal))
|
||||
ret = submit_bh(WRITE_SYNC | WRITE_FLUSH_FUA, bh);
|
||||
else
|
||||
ret = submit_bh(WRITE_SYNC, bh);
|
||||
|
|
@ -317,7 +315,7 @@ static void write_tag_block(journal_t *j, journal_block_tag_t *tag,
|
|||
unsigned long long block)
|
||||
{
|
||||
tag->t_blocknr = cpu_to_be32(block & (u32)~0);
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(j, JBD2_FEATURE_INCOMPAT_64BIT))
|
||||
if (jbd2_has_feature_64bit(j))
|
||||
tag->t_blocknr_high = cpu_to_be32((block >> 31) >> 1);
|
||||
}
|
||||
|
||||
|
|
@ -356,7 +354,7 @@ static void jbd2_block_tag_csum_set(journal_t *j, journal_block_tag_t *tag,
|
|||
bh->b_size);
|
||||
kunmap_atomic(addr);
|
||||
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(j, JBD2_FEATURE_INCOMPAT_CSUM_V3))
|
||||
if (jbd2_has_feature_csum3(j))
|
||||
tag3->t_checksum = cpu_to_be32(csum32);
|
||||
else
|
||||
tag->t_checksum = cpu_to_be16(csum32);
|
||||
|
|
@ -730,8 +728,7 @@ start_journal_io:
|
|||
/*
|
||||
* Compute checksum.
|
||||
*/
|
||||
if (JBD2_HAS_COMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_COMPAT_CHECKSUM)) {
|
||||
if (jbd2_has_feature_checksum(journal)) {
|
||||
crc32_sum =
|
||||
jbd2_checksum_data(crc32_sum, bh);
|
||||
}
|
||||
|
|
@ -797,8 +794,7 @@ start_journal_io:
|
|||
blkdev_issue_flush(journal->j_fs_dev, GFP_NOFS, NULL);
|
||||
|
||||
/* Done it all: now write the commit record asynchronously. */
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)) {
|
||||
if (jbd2_has_feature_async_commit(journal)) {
|
||||
err = journal_submit_commit_record(journal, commit_transaction,
|
||||
&cbh, crc32_sum);
|
||||
if (err)
|
||||
|
|
@ -889,8 +885,7 @@ start_journal_io:
|
|||
commit_transaction->t_state = T_COMMIT_JFLUSH;
|
||||
write_unlock(&journal->j_state_lock);
|
||||
|
||||
if (!JBD2_HAS_INCOMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)) {
|
||||
if (!jbd2_has_feature_async_commit(journal)) {
|
||||
err = journal_submit_commit_record(journal, commit_transaction,
|
||||
&cbh, crc32_sum);
|
||||
if (err)
|
||||
|
|
@ -898,8 +893,7 @@ start_journal_io:
|
|||
}
|
||||
if (cbh)
|
||||
err = journal_wait_on_commit_record(journal, cbh);
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT) &&
|
||||
if (jbd2_has_feature_async_commit(journal) &&
|
||||
journal->j_flags & JBD2_BARRIER) {
|
||||
blkdev_issue_flush(journal->j_dev, GFP_NOFS, NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1523,8 +1523,8 @@ static int journal_get_superblock(journal_t *journal)
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V2) &&
|
||||
JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V3)) {
|
||||
if (jbd2_has_feature_csum2(journal) &&
|
||||
jbd2_has_feature_csum3(journal)) {
|
||||
/* Can't have checksum v2 and v3 at the same time! */
|
||||
printk(KERN_ERR "JBD2: Can't enable checksumming v2 and v3 "
|
||||
"at the same time!\n");
|
||||
|
|
@ -1532,7 +1532,7 @@ static int journal_get_superblock(journal_t *journal)
|
|||
}
|
||||
|
||||
if (jbd2_journal_has_csum_v2or3_feature(journal) &&
|
||||
JBD2_HAS_COMPAT_FEATURE(journal, JBD2_FEATURE_COMPAT_CHECKSUM)) {
|
||||
jbd2_has_feature_checksum(journal)) {
|
||||
/* Can't have checksum v1 and v2 on at the same time! */
|
||||
printk(KERN_ERR "JBD2: Can't enable checksumming v1 and v2/3 "
|
||||
"at the same time!\n");
|
||||
|
|
@ -2198,15 +2198,15 @@ size_t journal_tag_bytes(journal_t *journal)
|
|||
{
|
||||
size_t sz;
|
||||
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V3))
|
||||
if (jbd2_has_feature_csum3(journal))
|
||||
return sizeof(journal_block_tag3_t);
|
||||
|
||||
sz = sizeof(journal_block_tag_t);
|
||||
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V2))
|
||||
if (jbd2_has_feature_csum2(journal))
|
||||
sz += sizeof(__u16);
|
||||
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
|
||||
if (jbd2_has_feature_64bit(journal))
|
||||
return sz;
|
||||
else
|
||||
return sz - sizeof(__u32);
|
||||
|
|
|
|||
|
|
@ -342,7 +342,7 @@ static inline unsigned long long read_tag_block(journal_t *journal,
|
|||
journal_block_tag_t *tag)
|
||||
{
|
||||
unsigned long long block = be32_to_cpu(tag->t_blocknr);
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
|
||||
if (jbd2_has_feature_64bit(journal))
|
||||
block |= (u64)be32_to_cpu(tag->t_blocknr_high) << 32;
|
||||
return block;
|
||||
}
|
||||
|
|
@ -411,7 +411,7 @@ static int jbd2_block_tag_csum_verify(journal_t *j, journal_block_tag_t *tag,
|
|||
csum32 = jbd2_chksum(j, j->j_csum_seed, (__u8 *)&seq, sizeof(seq));
|
||||
csum32 = jbd2_chksum(j, csum32, buf, j->j_blocksize);
|
||||
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(j, JBD2_FEATURE_INCOMPAT_CSUM_V3))
|
||||
if (jbd2_has_feature_csum3(j))
|
||||
return tag3->t_checksum == cpu_to_be32(csum32);
|
||||
else
|
||||
return tag->t_checksum == cpu_to_be16(csum32);
|
||||
|
|
@ -538,8 +538,7 @@ static int do_one_pass(journal_t *journal,
|
|||
* just skip over the blocks it describes. */
|
||||
if (pass != PASS_REPLAY) {
|
||||
if (pass == PASS_SCAN &&
|
||||
JBD2_HAS_COMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_COMPAT_CHECKSUM) &&
|
||||
jbd2_has_feature_checksum(journal) &&
|
||||
!info->end_transaction) {
|
||||
if (calc_chksums(journal, bh,
|
||||
&next_log_block,
|
||||
|
|
@ -694,8 +693,7 @@ static int do_one_pass(journal_t *journal,
|
|||
* much to do other than move on to the next sequence
|
||||
* number. */
|
||||
if (pass == PASS_SCAN &&
|
||||
JBD2_HAS_COMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_COMPAT_CHECKSUM)) {
|
||||
jbd2_has_feature_checksum(journal)) {
|
||||
int chksum_err, chksum_seen;
|
||||
struct commit_header *cbh =
|
||||
(struct commit_header *)bh->b_data;
|
||||
|
|
@ -735,8 +733,7 @@ static int do_one_pass(journal_t *journal,
|
|||
if (chksum_err) {
|
||||
info->end_transaction = next_commit_ID;
|
||||
|
||||
if (!JBD2_HAS_INCOMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)){
|
||||
if (!jbd2_has_feature_async_commit(journal)) {
|
||||
journal->j_failed_commit =
|
||||
next_commit_ID;
|
||||
brelse(bh);
|
||||
|
|
@ -750,8 +747,7 @@ static int do_one_pass(journal_t *journal,
|
|||
bh->b_data)) {
|
||||
info->end_transaction = next_commit_ID;
|
||||
|
||||
if (!JBD2_HAS_INCOMPAT_FEATURE(journal,
|
||||
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)) {
|
||||
if (!jbd2_has_feature_async_commit(journal)) {
|
||||
journal->j_failed_commit =
|
||||
next_commit_ID;
|
||||
brelse(bh);
|
||||
|
|
@ -859,7 +855,7 @@ static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
|
|||
return -EINVAL;
|
||||
max = rcount;
|
||||
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
|
||||
if (jbd2_has_feature_64bit(journal))
|
||||
record_len = 8;
|
||||
|
||||
while (offset + record_len <= max) {
|
||||
|
|
|
|||
|
|
@ -589,7 +589,7 @@ 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))
|
||||
if (jbd2_has_feature_64bit(journal))
|
||||
sz = 8;
|
||||
else
|
||||
sz = 4;
|
||||
|
|
@ -619,7 +619,7 @@ static void write_one_revoke_record(journal_t *journal,
|
|||
*descriptorp = descriptor;
|
||||
}
|
||||
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
|
||||
if (jbd2_has_feature_64bit(journal))
|
||||
* ((__be64 *)(&descriptor->b_data[offset])) =
|
||||
cpu_to_be64(record->blocknr);
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in a new issue