Skip to content

Commit 088f134

Browse files
YuezhangMonamjaejeon
authored andcommitted
exfat: remove call ilog2() from exfat_readdir()
There is no need to call ilog2() for the conversions between cluster and dentry in exfat_readdir(), because these conversions can be replaced with EXFAT_DEN_TO_CLU()/EXFAT_CLU_TO_DEN(). Code refinement, no functional changes. Signed-off-by: Yuezhang Mo <[email protected]> Reviewed-by: Andy Wu <[email protected]> Reviewed-by: Aoyama Wataru <[email protected]> Reviewed-by: Sungjong Seo <[email protected]> Signed-off-by: Namjae Jeon <[email protected]>
1 parent f3fe395 commit 088f134

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

fs/exfat/dir.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ static void exfat_get_uniname_from_ext_entry(struct super_block *sb,
6161
/* read a directory entry from the opened directory */
6262
static int exfat_readdir(struct inode *inode, loff_t *cpos, struct exfat_dir_entry *dir_entry)
6363
{
64-
int i, dentries_per_clu, dentries_per_clu_bits = 0, num_ext;
64+
int i, dentries_per_clu, num_ext;
6565
unsigned int type, clu_offset, max_dentries;
6666
struct exfat_chain dir, clu;
6767
struct exfat_uni_name uni_name;
@@ -83,11 +83,10 @@ static int exfat_readdir(struct inode *inode, loff_t *cpos, struct exfat_dir_ent
8383
EXFAT_B_TO_CLU(i_size_read(inode), sbi), ei->flags);
8484

8585
dentries_per_clu = sbi->dentries_per_clu;
86-
dentries_per_clu_bits = ilog2(dentries_per_clu);
8786
max_dentries = (unsigned int)min_t(u64, MAX_EXFAT_DENTRIES,
88-
(u64)sbi->num_clusters << dentries_per_clu_bits);
87+
(u64)EXFAT_CLU_TO_DEN(sbi->num_clusters, sbi));
8988

90-
clu_offset = dentry >> dentries_per_clu_bits;
89+
clu_offset = EXFAT_DEN_TO_CLU(dentry, sbi);
9190
exfat_chain_dup(&clu, &dir);
9291

9392
if (clu.flags == ALLOC_NO_FAT_CHAIN) {
@@ -162,7 +161,7 @@ static int exfat_readdir(struct inode *inode, loff_t *cpos, struct exfat_dir_ent
162161
dir_entry->entry = dentry;
163162
brelse(bh);
164163

165-
ei->hint_bmap.off = dentry >> dentries_per_clu_bits;
164+
ei->hint_bmap.off = EXFAT_DEN_TO_CLU(dentry, sbi);
166165
ei->hint_bmap.clu = clu.dir;
167166

168167
*cpos = EXFAT_DEN_TO_B(dentry + 1 + num_ext);

fs/exfat/exfat_fs.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,17 @@ enum {
101101
/*
102102
* helpers for block size to dentry size conversion.
103103
*/
104-
#define EXFAT_B_TO_DEN_IDX(b, sbi) \
105-
((b) << ((sbi)->cluster_size_bits - DENTRY_SIZE_BITS))
106104
#define EXFAT_B_TO_DEN(b) ((b) >> DENTRY_SIZE_BITS)
107105
#define EXFAT_DEN_TO_B(b) ((b) << DENTRY_SIZE_BITS)
108106

107+
/*
108+
* helpers for cluster size to dentry size conversion.
109+
*/
110+
#define EXFAT_CLU_TO_DEN(clu, sbi) \
111+
((clu) << ((sbi)->cluster_size_bits - DENTRY_SIZE_BITS))
112+
#define EXFAT_DEN_TO_CLU(dentry, sbi) \
113+
((dentry) >> ((sbi)->cluster_size_bits - DENTRY_SIZE_BITS))
114+
109115
/*
110116
* helpers for fat entry.
111117
*/

0 commit comments

Comments
 (0)