From 455619597a3f68a178c0f8827667b79df8127a81 Mon Sep 17 00:00:00 2001 From: lvyuanyuan Date: Tue, 27 Jun 2023 10:38:54 +0000 Subject: [PATCH 1/3] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lvyuanyuan Change-Id: I445fcd9c0b62687c44dbe829406c3189c586d8c4 --- fs/hmdfs/file_cloud.c | 9 +++++---- fs/hmdfs/hmdfs_dentryfile.c | 26 +++++++++++++------------- fs/hmdfs/hmdfs_dentryfile.h | 4 ++-- fs/hmdfs/hmdfs_dentryfile_cloud.c | 4 ++-- fs/hmdfs/hmdfs_dentryfile_cloud.h | 4 ++-- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/fs/hmdfs/file_cloud.c b/fs/hmdfs/file_cloud.c index f4506ec1510d..d587fc6d0ba9 100644 --- a/fs/hmdfs/file_cloud.c +++ b/fs/hmdfs/file_cloud.c @@ -56,17 +56,18 @@ int hmdfs_file_open_cloud(struct inode *inode, struct file *file) struct hmdfs_sb_info *sbi = inode->i_sb->s_fs_info; struct path root_path; struct file *lower_file; - struct hmdfs_file_info *gfi = kzalloc(sizeof(*gfi), GFP_KERNEL); int err = 0; + struct hmdfs_file_info *gfi = kzalloc(sizeof(*gfi), GFP_KERNEL); + if (!gfi) + return -ENOMEM; + if (!sbi->cloud_dir) { hmdfs_info("no cloud_dir"); + kfree(gfi); return -EPERM; } - if (!gfi) - return -ENOMEM; - err = kern_path(sbi->cloud_dir, 0, &root_path); if (err) { hmdfs_info("kern_path failed: %d", err); diff --git a/fs/hmdfs/hmdfs_dentryfile.c b/fs/hmdfs/hmdfs_dentryfile.c index 01efcba2f6ce..6eec384c16a4 100644 --- a/fs/hmdfs/hmdfs_dentryfile.c +++ b/fs/hmdfs/hmdfs_dentryfile.c @@ -421,16 +421,16 @@ int hmdfs_metainfo_write(struct hmdfs_sb_info *sbi, struct file *filp, * level2 bucket0(3) bucket1(4) bucket2(5) bucket3(6) * return bucket number. */ -__u32 get_bucketaddr(int level, int buckoffset) +__u64 get_bucketaddr(unsigned int level, __u64 buckoffset) { - int all_level_bucketaddr = 0; - __u32 curlevelmaxbucks; + __u64 all_level_bucketaddr = 0; + __u64 curlevelmaxbucks; if (level >= MAX_BUCKET_LEVEL) { hmdfs_err("level = %d overflow", level); return all_level_bucketaddr; } - curlevelmaxbucks = (1 << level); + curlevelmaxbucks = ((__u64)1 << level); if (buckoffset >= curlevelmaxbucks) { hmdfs_err("buckoffset %d overflow, level %d has %d buckets max", buckoffset, level, curlevelmaxbucks); @@ -441,32 +441,32 @@ __u32 get_bucketaddr(int level, int buckoffset) return all_level_bucketaddr; } -__u32 get_bucket_by_level(int level) +__u64 get_bucket_by_level(unsigned int level) { - int buckets = 0; + __u64 buckets = 0; if (level >= MAX_BUCKET_LEVEL) { hmdfs_err("level = %d overflow", level); return buckets; } - buckets = (1 << level); + buckets = ((__u64)1 << level); return buckets; } -static __u32 get_overall_bucket(int level) +static __u64 get_overall_bucket(unsigned int level) { - int buckets = 0; + __u64 buckets = 0; if (level >= MAX_BUCKET_LEVEL) { hmdfs_err("level = %d overflow", level); return buckets; } - buckets = (1 << (level + 1)) - 1; + buckets = ((__u64)1 << (level + 1)) - 1; return buckets; } -static inline loff_t get_dcache_file_size(int level) +static inline loff_t get_dcache_file_size(unsigned int level) { loff_t buckets = get_overall_bucket(level); @@ -697,8 +697,8 @@ static struct hmdfs_dentry *hmdfs_in_level(struct dentry *child_dentry, unsigned int level, struct hmdfs_dcache_lookup_ctx *ctx) { - unsigned int nbucket; - unsigned int bidx, end_block; + unsigned long nbucket; + unsigned long bidx, end_block; struct hmdfs_dentry *de = NULL; struct hmdfs_dentry *tmp_insense_de = NULL; struct hmdfs_dentry_group *dentry_blk; diff --git a/fs/hmdfs/hmdfs_dentryfile.h b/fs/hmdfs/hmdfs_dentryfile.h index 72bb5954a8b4..2ff6adae4b0d 100644 --- a/fs/hmdfs/hmdfs_dentryfile.h +++ b/fs/hmdfs/hmdfs_dentryfile.h @@ -341,7 +341,7 @@ static inline bool cache_item_revalidate(unsigned long conn_time, } __u32 hmdfs_dentry_hash(const struct qstr *qstr, bool case_sense); -__u32 get_bucketaddr(int level, int buckoffset); -__u32 get_bucket_by_level(int level); +__u64 get_bucketaddr(unsigned int level, __u64 buckoffset); +__u64 get_bucket_by_level(unsigned int level); unsigned int get_max_depth(struct file *filp); #endif diff --git a/fs/hmdfs/hmdfs_dentryfile_cloud.c b/fs/hmdfs/hmdfs_dentryfile_cloud.c index cf3ceba13300..2aba8c3ab382 100644 --- a/fs/hmdfs/hmdfs_dentryfile_cloud.c +++ b/fs/hmdfs/hmdfs_dentryfile_cloud.c @@ -95,8 +95,8 @@ static struct hmdfs_dentry_cloud * hmdfs_in_level(struct dentry *child_dentry, unsigned int level, struct hmdfs_dcache_lookup_ctx_cloud *ctx) { - unsigned int nbucket; - unsigned int bidx, end_block; + unsigned long nbucket; + unsigned long bidx, end_block; struct hmdfs_dentry_cloud *de = NULL; struct hmdfs_dentry_cloud *tmp_insense_de = NULL; struct hmdfs_dentry_group_cloud *dentry_blk; diff --git a/fs/hmdfs/hmdfs_dentryfile_cloud.h b/fs/hmdfs/hmdfs_dentryfile_cloud.h index 5d8de2abae4a..a2c3ed74d066 100644 --- a/fs/hmdfs/hmdfs_dentryfile_cloud.h +++ b/fs/hmdfs/hmdfs_dentryfile_cloud.h @@ -45,12 +45,12 @@ struct hmdfs_dcache_lookup_ctx_cloud { __u32 hash; /* for case sensitive */ - unsigned int bidx; + unsigned long bidx; struct hmdfs_dentry_group_cloud *page; /* for case insensitive */ struct hmdfs_dentry_cloud *insense_de; - unsigned int insense_bidx; + unsigned long insense_bidx; struct hmdfs_dentry_group_cloud *insense_page; }; -- Gitee From 92ab89e8d1644afc7a3e30d8280aa78e4a0fb3c3 Mon Sep 17 00:00:00 2001 From: lvyuanyuan Date: Tue, 27 Jun 2023 11:55:00 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lvyuanyuan Change-Id: I88c116c6e5267da7fa77cb29c0fc7fde4995ee8d --- fs/hmdfs/hmdfs_dentryfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/hmdfs/hmdfs_dentryfile.c b/fs/hmdfs/hmdfs_dentryfile.c index 6eec384c16a4..a1db040696eb 100644 --- a/fs/hmdfs/hmdfs_dentryfile.c +++ b/fs/hmdfs/hmdfs_dentryfile.c @@ -432,7 +432,7 @@ __u64 get_bucketaddr(unsigned int level, __u64 buckoffset) } curlevelmaxbucks = ((__u64)1 << level); if (buckoffset >= curlevelmaxbucks) { - hmdfs_err("buckoffset %d overflow, level %d has %d buckets max", + hmdfs_err("buckoffset %lu overflow, level %d has %lu buckets max", buckoffset, level, curlevelmaxbucks); return all_level_bucketaddr; } -- Gitee From 87519778212ffb0d968a57697aa20b1970cce435 Mon Sep 17 00:00:00 2001 From: lvyuanyuan Date: Tue, 27 Jun 2023 13:13:12 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lvyuanyuan Change-Id: I033520f1a593fdd660203d896d16f3ff493e9227 --- fs/hmdfs/hmdfs_dentryfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/hmdfs/hmdfs_dentryfile.c b/fs/hmdfs/hmdfs_dentryfile.c index a1db040696eb..b0e12fcc9c7f 100644 --- a/fs/hmdfs/hmdfs_dentryfile.c +++ b/fs/hmdfs/hmdfs_dentryfile.c @@ -432,7 +432,7 @@ __u64 get_bucketaddr(unsigned int level, __u64 buckoffset) } curlevelmaxbucks = ((__u64)1 << level); if (buckoffset >= curlevelmaxbucks) { - hmdfs_err("buckoffset %lu overflow, level %d has %lu buckets max", + hmdfs_err("buckoffset %llu overflow, level %d has %llu buckets max", buckoffset, level, curlevelmaxbucks); return all_level_bucketaddr; } -- Gitee