ext4: use ext4_fc_tl_mem in fast-commit replay path
[ Upstream commit11768cfd98
] To avoid 'sparse' warnings about missing endianness conversions, don't store native endianness values into struct ext4_fc_tl. Instead, use a separate struct type, ext4_fc_tl_mem. Fixes:dcc5827484
("ext4: factor out ext4_fc_get_tl()") Cc: Ye Bin <yebin10@huawei.com> Signed-off-by: Eric Biggers <ebiggers@google.com> Reviewed-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20221217050212.150665-1-ebiggers@kernel.org Signed-off-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
aa4d726af7
Коммит
98db4a0322
|
@ -1282,8 +1282,14 @@ struct dentry_info_args {
|
|||
char *dname;
|
||||
};
|
||||
|
||||
/* Same as struct ext4_fc_tl, but uses native endianness fields */
|
||||
struct ext4_fc_tl_mem {
|
||||
u16 fc_tag;
|
||||
u16 fc_len;
|
||||
};
|
||||
|
||||
static inline void tl_to_darg(struct dentry_info_args *darg,
|
||||
struct ext4_fc_tl *tl, u8 *val)
|
||||
struct ext4_fc_tl_mem *tl, u8 *val)
|
||||
{
|
||||
struct ext4_fc_dentry_info fcd;
|
||||
|
||||
|
@ -1295,16 +1301,18 @@ static inline void tl_to_darg(struct dentry_info_args *darg,
|
|||
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)
|
||||
static inline void ext4_fc_get_tl(struct ext4_fc_tl_mem *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);
|
||||
struct ext4_fc_tl tl_disk;
|
||||
|
||||
memcpy(&tl_disk, val, EXT4_FC_TAG_BASE_LEN);
|
||||
tl->fc_len = le16_to_cpu(tl_disk.fc_len);
|
||||
tl->fc_tag = le16_to_cpu(tl_disk.fc_tag);
|
||||
}
|
||||
|
||||
/* Unlink replay function */
|
||||
static int ext4_fc_replay_unlink(struct super_block *sb, struct ext4_fc_tl *tl,
|
||||
u8 *val)
|
||||
static int ext4_fc_replay_unlink(struct super_block *sb,
|
||||
struct ext4_fc_tl_mem *tl, u8 *val)
|
||||
{
|
||||
struct inode *inode, *old_parent;
|
||||
struct qstr entry;
|
||||
|
@ -1401,8 +1409,8 @@ out:
|
|||
}
|
||||
|
||||
/* Link replay function */
|
||||
static int ext4_fc_replay_link(struct super_block *sb, struct ext4_fc_tl *tl,
|
||||
u8 *val)
|
||||
static int ext4_fc_replay_link(struct super_block *sb,
|
||||
struct ext4_fc_tl_mem *tl, u8 *val)
|
||||
{
|
||||
struct inode *inode;
|
||||
struct dentry_info_args darg;
|
||||
|
@ -1456,8 +1464,8 @@ static int ext4_fc_record_modified_inode(struct super_block *sb, int ino)
|
|||
/*
|
||||
* Inode replay function
|
||||
*/
|
||||
static int ext4_fc_replay_inode(struct super_block *sb, struct ext4_fc_tl *tl,
|
||||
u8 *val)
|
||||
static int ext4_fc_replay_inode(struct super_block *sb,
|
||||
struct ext4_fc_tl_mem *tl, u8 *val)
|
||||
{
|
||||
struct ext4_fc_inode fc_inode;
|
||||
struct ext4_inode *raw_inode;
|
||||
|
@ -1557,8 +1565,8 @@ out:
|
|||
* inode for which we are trying to create a dentry here, should already have
|
||||
* been replayed before we start here.
|
||||
*/
|
||||
static int ext4_fc_replay_create(struct super_block *sb, struct ext4_fc_tl *tl,
|
||||
u8 *val)
|
||||
static int ext4_fc_replay_create(struct super_block *sb,
|
||||
struct ext4_fc_tl_mem *tl, u8 *val)
|
||||
{
|
||||
int ret = 0;
|
||||
struct inode *inode = NULL;
|
||||
|
@ -1657,7 +1665,7 @@ int ext4_fc_record_regions(struct super_block *sb, int ino,
|
|||
|
||||
/* Replay add range tag */
|
||||
static int ext4_fc_replay_add_range(struct super_block *sb,
|
||||
struct ext4_fc_tl *tl, u8 *val)
|
||||
struct ext4_fc_tl_mem *tl, u8 *val)
|
||||
{
|
||||
struct ext4_fc_add_range fc_add_ex;
|
||||
struct ext4_extent newex, *ex;
|
||||
|
@ -1778,8 +1786,8 @@ out:
|
|||
|
||||
/* Replay DEL_RANGE tag */
|
||||
static int
|
||||
ext4_fc_replay_del_range(struct super_block *sb, struct ext4_fc_tl *tl,
|
||||
u8 *val)
|
||||
ext4_fc_replay_del_range(struct super_block *sb,
|
||||
struct ext4_fc_tl_mem *tl, u8 *val)
|
||||
{
|
||||
struct inode *inode;
|
||||
struct ext4_fc_del_range lrange;
|
||||
|
@ -1972,7 +1980,7 @@ static int ext4_fc_replay_scan(journal_t *journal,
|
|||
struct ext4_fc_replay_state *state;
|
||||
int ret = JBD2_FC_REPLAY_CONTINUE;
|
||||
struct ext4_fc_add_range ext;
|
||||
struct ext4_fc_tl tl;
|
||||
struct ext4_fc_tl_mem tl;
|
||||
struct ext4_fc_tail tail;
|
||||
__u8 *start, *end, *cur, *val;
|
||||
struct ext4_fc_head head;
|
||||
|
@ -2091,7 +2099,7 @@ static int ext4_fc_replay(journal_t *journal, struct buffer_head *bh,
|
|||
{
|
||||
struct super_block *sb = journal->j_private;
|
||||
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
||||
struct ext4_fc_tl tl;
|
||||
struct ext4_fc_tl_mem tl;
|
||||
__u8 *start, *end, *cur, *val;
|
||||
int ret = JBD2_FC_REPLAY_CONTINUE;
|
||||
struct ext4_fc_replay_state *state = &sbi->s_fc_replay_state;
|
||||
|
|
Загрузка…
Ссылка в новой задаче