From 7bece77da1c9b20b92dbb044bee3b535265722e5 Mon Sep 17 00:00:00 2001 From: liqiang Date: Wed, 3 Apr 2024 15:04:59 +0800 Subject: [PATCH] adapt kernel 6.6 of compile Signed-off-by: liqiang --- qtfs/qtfs/proc.c | 4 ++++ qtfs/qtfs/sb.c | 25 +++++++++++++++++++++++-- qtfs/qtfs_common/symbol_wrapper.c | 2 +- qtfs/qtfs_server/fsops.c | 4 ++++ 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/qtfs/qtfs/proc.c b/qtfs/qtfs/proc.c index 863fcc2..2841524 100644 --- a/qtfs/qtfs/proc.c +++ b/qtfs/qtfs/proc.c @@ -154,7 +154,11 @@ struct dentry *qtfs_proc_lookup(struct inode *parent_inode, struct dentry *child ii.i_ino = spath.dentry->d_inode->i_ino; ii.atime = spath.dentry->d_inode->i_atime; ii.mtime = spath.dentry->d_inode->i_mtime; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)) + ii.ctime = inode_get_ctime(spath.dentry->d_inode); +#else ii.ctime = spath.dentry->d_inode->i_ctime; +#endif path_put(&spath); kfree(tmp); diff --git a/qtfs/qtfs/sb.c b/qtfs/qtfs/sb.c index 94fb188..41ed1e5 100644 --- a/qtfs/qtfs/sb.c +++ b/qtfs/qtfs/sb.c @@ -46,7 +46,11 @@ static void qtfs_copy_kstat_inode(struct inode *inode, struct kstat *stat) inode->i_gid = stat->gid; inode->i_atime = stat->atime; inode->i_mtime = stat->mtime; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)) + inode_set_ctime_to_ts(inode, stat->ctime); +#else inode->i_ctime = stat->ctime; +#endif } void qtfs_sb_init(void) @@ -1017,7 +1021,12 @@ static void qtfs_init_inode(struct super_block *sb, struct inode *inode, struct inode->i_size = ii->i_size; inode->i_atime = ii->atime; inode->i_mtime = ii->mtime; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)) + inode_set_ctime_to_ts(inode, ii->ctime); +#else inode->i_ctime = ii->ctime; +#endif if (S_ISLNK(inode->i_mode)) { if (is_sb_proc(sb)) { @@ -1170,7 +1179,11 @@ int qtfs_unlink(struct inode *dir, struct dentry *dentry) qtfs_err("qtfs unlink %s failed, errno:%d\n", req->path, rsp->errno); } else { qtfs_info("qtfs unlink %s success\n", req->path); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)) + inode_set_ctime_to_ts(inode, inode_get_ctime(dir)); +#else inode->i_ctime = dir->i_ctime; +#endif inode_dec_link_count(inode); } ret = rsp->errno; @@ -1208,7 +1221,11 @@ int qtfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_d error = rsp->errno; goto err_end; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)) + inode_set_ctime_to_ts(inode, inode_get_ctime(dir)); +#else inode->i_ctime = current_time(inode); +#endif inode_inc_link_count(inode); ihold(inode); d_instantiate(new_dentry, inode); @@ -1711,8 +1728,12 @@ static int qtfs_fill_super(struct super_block *sb, void *priv_data, int silent) root_inode->i_op = &qtfs_inode_ops; } root_inode->i_fop = &qtfs_dir_ops; - root_inode->i_atime = root_inode->i_mtime = root_inode->i_ctime = CURRENT_TIME(root_inode); - + root_inode->i_atime = root_inode->i_mtime = CURRENT_TIME(root_inode); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)) + inode_set_ctime_to_ts(root_inode, CURRENT_TIME(root_inode)); +#else + root_inode->i_ctime = CURRENT_TIME(root_inode); +#endif sb->s_xattr = qtfs_xattr_handlers; err = super_setup_bdi(sb); if (err) { diff --git a/qtfs/qtfs_common/symbol_wrapper.c b/qtfs/qtfs_common/symbol_wrapper.c index 143bee2..84c1bd5 100644 --- a/qtfs/qtfs_common/symbol_wrapper.c +++ b/qtfs/qtfs_common/symbol_wrapper.c @@ -134,7 +134,7 @@ int qtfs_kallsyms_hack_init(void) update_mapping_prot = (void *)qtfs_kallsyms_lookup_name("update_mapping_prot"); start_rodata = (unsigned long)qtfs_kallsyms_lookup_name("__start_rodata"); end_rodata = (unsigned long)qtfs_kallsyms_lookup_name("__end_rodata"); - if (update_mapping_prot == NULL || start_rodata == NULL || end_rodata == NULL) { + if (update_mapping_prot == NULL || (void *)start_rodata == NULL || (void *)end_rodata == NULL) { qtfs_err("failed to init memory protect handler"); return -1; } diff --git a/qtfs/qtfs_server/fsops.c b/qtfs/qtfs_server/fsops.c index ea10975..eeefd74 100644 --- a/qtfs/qtfs_server/fsops.c +++ b/qtfs/qtfs_server/fsops.c @@ -96,7 +96,11 @@ static inline void qtfs_inode_info_fill(struct inode_info *ii, struct inode *ino ii->i_size = inode->i_size; ii->atime = inode->i_atime; ii->mtime = inode->i_mtime; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)) + ii->ctime = inode_get_ctime(inode); +#else ii->ctime = inode->i_ctime; +#endif ii->i_bytes = inode->i_bytes; ii->i_blkbits = inode->i_blkbits; ii->i_write_hint = inode->i_write_hint; -- Gitee