Commit 36955d36 authored by Yuezhang Mo's avatar Yuezhang Mo Committed by Namjae Jeon

exfat: reuse exfat_find_location() to simplify exfat_get_dentry_set()

In exfat_get_dentry_set(), part of the code is the same as
exfat_find_location(), reuse exfat_find_location() to simplify
exfat_get_dentry_set().

Code refinement, no functional changes.
Signed-off-by: default avatarYuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: default avatarAndy Wu <Andy.Wu@sony.com>
Reviewed-by: default avatarAoyama Wataru <wataru.aoyama@sony.com>
Reviewed-by: default avatarSungjong Seo <sj1557.seo@samsung.com>
Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
parent 40306b4d
...@@ -818,7 +818,7 @@ int exfat_get_dentry_set(struct exfat_entry_set_cache *es, ...@@ -818,7 +818,7 @@ int exfat_get_dentry_set(struct exfat_entry_set_cache *es,
unsigned int type) unsigned int type)
{ {
int ret, i, num_bh; int ret, i, num_bh;
unsigned int off, byte_offset, clu = 0; unsigned int off;
sector_t sec; sector_t sec;
struct exfat_sb_info *sbi = EXFAT_SB(sb); struct exfat_sb_info *sbi = EXFAT_SB(sb);
struct exfat_dentry *ep; struct exfat_dentry *ep;
...@@ -831,27 +831,16 @@ int exfat_get_dentry_set(struct exfat_entry_set_cache *es, ...@@ -831,27 +831,16 @@ int exfat_get_dentry_set(struct exfat_entry_set_cache *es,
return -EIO; return -EIO;
} }
byte_offset = EXFAT_DEN_TO_B(entry); ret = exfat_find_location(sb, p_dir, entry, &sec, &off);
ret = exfat_walk_fat_chain(sb, p_dir, byte_offset, &clu);
if (ret) if (ret)
return ret; return ret;
memset(es, 0, sizeof(*es)); memset(es, 0, sizeof(*es));
es->sb = sb; es->sb = sb;
es->modified = false; es->modified = false;
/* byte offset in cluster */
byte_offset = EXFAT_CLU_OFFSET(byte_offset, sbi);
/* byte offset in sector */
off = EXFAT_BLK_OFFSET(byte_offset, sb);
es->start_off = off; es->start_off = off;
es->bh = es->__bh; es->bh = es->__bh;
/* sector offset in cluster */
sec = EXFAT_B_TO_BLK(byte_offset, sb);
sec += exfat_cluster_to_sector(sbi, clu);
bh = sb_bread(sb, sec); bh = sb_bread(sb, sec);
if (!bh) if (!bh)
return -EIO; return -EIO;
...@@ -878,6 +867,8 @@ int exfat_get_dentry_set(struct exfat_entry_set_cache *es, ...@@ -878,6 +867,8 @@ int exfat_get_dentry_set(struct exfat_entry_set_cache *es,
for (i = 1; i < num_bh; i++) { for (i = 1; i < num_bh; i++) {
/* get the next sector */ /* get the next sector */
if (exfat_is_last_sector_in_cluster(sbi, sec)) { if (exfat_is_last_sector_in_cluster(sbi, sec)) {
unsigned int clu = exfat_sector_to_cluster(sbi, sec);
if (p_dir->flags == ALLOC_NO_FAT_CHAIN) if (p_dir->flags == ALLOC_NO_FAT_CHAIN)
clu++; clu++;
else if (exfat_get_next_cluster(sb, &clu)) else if (exfat_get_next_cluster(sb, &clu))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment