ext4: factor out ext4_fc_get_tl()
authorEric Biggers <ebiggers@kernel.org>
Thu, 5 Jan 2023 07:13:53 +0000 (23:13 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jan 2023 10:59:04 +0000 (11:59 +0100)
From: Ye Bin <yebin10@huawei.com>

commit dcc5827484d6e53ccda12334f8bbfafcc593ceda upstream.

Factor out ext4_fc_get_tl() to fill 'tl' with host byte order.

Signed-off-by: Ye Bin <yebin10@huawei.com>
Link: https://lore.kernel.org/r/20220924075233.2315259-3-yebin10@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ext4/fast_commit.c

index 9b1dedd..fdce08c 100644 (file)
@@ -1271,7 +1271,7 @@ struct dentry_info_args {
 };
 
 static inline void tl_to_darg(struct dentry_info_args *darg,
-                             struct  ext4_fc_tl *tl, u8 *val)
+                             struct ext4_fc_tl *tl, u8 *val)
 {
        struct ext4_fc_dentry_info fcd;
 
@@ -1280,8 +1280,14 @@ static inline void tl_to_darg(struct dentry_info_args *darg,
        darg->parent_ino = le32_to_cpu(fcd.fc_parent_ino);
        darg->ino = le32_to_cpu(fcd.fc_ino);
        darg->dname = val + offsetof(struct ext4_fc_dentry_info, fc_dname);
-       darg->dname_len = le16_to_cpu(tl->fc_len) -
-               sizeof(struct ext4_fc_dentry_info);
+       darg->dname_len = tl->fc_len - sizeof(struct ext4_fc_dentry_info);
+}
+
+static inline void ext4_fc_get_tl(struct ext4_fc_tl *tl, u8 *val)
+{
+       memcpy(tl, val, EXT4_FC_TAG_BASE_LEN);
+       tl->fc_len = le16_to_cpu(tl->fc_len);
+       tl->fc_tag = le16_to_cpu(tl->fc_tag);
 }
 
 /* Unlink replay function */
@@ -1446,7 +1452,7 @@ static int ext4_fc_replay_inode(struct super_block *sb, struct ext4_fc_tl *tl,
        struct ext4_inode *raw_fc_inode;
        struct inode *inode = NULL;
        struct ext4_iloc iloc;
-       int inode_len, ino, ret, tag = le16_to_cpu(tl->fc_tag);
+       int inode_len, ino, ret, tag = tl->fc_tag;
        struct ext4_extent_header *eh;
 
        memcpy(&fc_inode, val, sizeof(fc_inode));
@@ -1471,7 +1477,7 @@ static int ext4_fc_replay_inode(struct super_block *sb, struct ext4_fc_tl *tl,
        if (ret)
                goto out;
 
-       inode_len = le16_to_cpu(tl->fc_len) - sizeof(struct ext4_fc_inode);
+       inode_len = tl->fc_len - sizeof(struct ext4_fc_inode);
        raw_inode = ext4_raw_inode(&iloc);
 
        memcpy(raw_inode, raw_fc_inode, offsetof(struct ext4_inode, i_block));
@@ -1958,12 +1964,12 @@ static int ext4_fc_replay_scan(journal_t *journal,
 
        state->fc_replay_expected_off++;
        for (cur = start; cur < end;
-            cur = cur + EXT4_FC_TAG_BASE_LEN + le16_to_cpu(tl.fc_len)) {
-               memcpy(&tl, cur, EXT4_FC_TAG_BASE_LEN);
+            cur = cur + EXT4_FC_TAG_BASE_LEN + tl.fc_len) {
+               ext4_fc_get_tl(&tl, cur);
                val = cur + EXT4_FC_TAG_BASE_LEN;
                ext4_debug("Scan phase, tag:%s, blk %lld\n",
-                         tag2str(le16_to_cpu(tl.fc_tag)), bh->b_blocknr);
-               switch (le16_to_cpu(tl.fc_tag)) {
+                          tag2str(tl.fc_tag), bh->b_blocknr);
+               switch (tl.fc_tag) {
                case EXT4_FC_TAG_ADD_RANGE:
                        memcpy(&ext, val, sizeof(ext));
                        ex = (struct ext4_extent *)&ext.fc_ex;
@@ -1983,7 +1989,7 @@ static int ext4_fc_replay_scan(journal_t *journal,
                case EXT4_FC_TAG_PAD:
                        state->fc_cur_tag++;
                        state->fc_crc = ext4_chksum(sbi, state->fc_crc, cur,
-                               EXT4_FC_TAG_BASE_LEN + le16_to_cpu(tl.fc_len));
+                               EXT4_FC_TAG_BASE_LEN + tl.fc_len);
                        break;
                case EXT4_FC_TAG_TAIL:
                        state->fc_cur_tag++;
@@ -2016,7 +2022,7 @@ static int ext4_fc_replay_scan(journal_t *journal,
                        }
                        state->fc_cur_tag++;
                        state->fc_crc = ext4_chksum(sbi, state->fc_crc, cur,
-                               EXT4_FC_TAG_BASE_LEN + le16_to_cpu(tl.fc_len));
+                               EXT4_FC_TAG_BASE_LEN + tl.fc_len);
                        break;
                default:
                        ret = state->fc_replay_num_tags ?
@@ -2072,8 +2078,8 @@ static int ext4_fc_replay(journal_t *journal, struct buffer_head *bh,
        end = (__u8 *)bh->b_data + journal->j_blocksize - 1;
 
        for (cur = start; cur < end;
-            cur = cur + EXT4_FC_TAG_BASE_LEN + le16_to_cpu(tl.fc_len)) {
-               memcpy(&tl, cur, EXT4_FC_TAG_BASE_LEN);
+            cur = cur + EXT4_FC_TAG_BASE_LEN + tl.fc_len) {
+               ext4_fc_get_tl(&tl, cur);
                val = cur + EXT4_FC_TAG_BASE_LEN;
 
                if (state->fc_replay_num_tags == 0) {
@@ -2081,10 +2087,9 @@ static int ext4_fc_replay(journal_t *journal, struct buffer_head *bh,
                        ext4_fc_set_bitmaps_and_counters(sb);
                        break;
                }
-               ext4_debug("Replay phase, tag:%s\n",
-                               tag2str(le16_to_cpu(tl.fc_tag)));
+               ext4_debug("Replay phase, tag:%s\n", tag2str(tl.fc_tag));
                state->fc_replay_num_tags--;
-               switch (le16_to_cpu(tl.fc_tag)) {
+               switch (tl.fc_tag) {
                case EXT4_FC_TAG_LINK:
                        ret = ext4_fc_replay_link(sb, &tl, val);
                        break;
@@ -2105,19 +2110,18 @@ static int ext4_fc_replay(journal_t *journal, struct buffer_head *bh,
                        break;
                case EXT4_FC_TAG_PAD:
                        trace_ext4_fc_replay(sb, EXT4_FC_TAG_PAD, 0,
-                                            le16_to_cpu(tl.fc_len), 0);
+                                            tl.fc_len, 0);
                        break;
                case EXT4_FC_TAG_TAIL:
-                       trace_ext4_fc_replay(sb, EXT4_FC_TAG_TAIL, 0,
-                                            le16_to_cpu(tl.fc_len), 0);
+                       trace_ext4_fc_replay(sb, EXT4_FC_TAG_TAIL,
+                                            0, tl.fc_len, 0);
                        memcpy(&tail, val, sizeof(tail));
                        WARN_ON(le32_to_cpu(tail.fc_tid) != expected_tid);
                        break;
                case EXT4_FC_TAG_HEAD:
                        break;
                default:
-                       trace_ext4_fc_replay(sb, le16_to_cpu(tl.fc_tag), 0,
-                                            le16_to_cpu(tl.fc_len), 0);
+                       trace_ext4_fc_replay(sb, tl.fc_tag, 0, tl.fc_len, 0);
                        ret = -ECANCELED;
                        break;
                }