RE: [PATCH] exfat: remove 'rwoffset' in exfat_inode_info
> On 2020/09/12 14:01, Sungjong Seo wrote: > >> Remove 'rwoffset' in exfat_inode_info and replace it with the > >> parameter(cpos) of exfat_readdir. > >> Since rwoffset of is referenced only by exfat_readdir, it is not > >> necessary a exfat_inode_info's member. > >> > >> Signed-off-by: Tetsuhiro Kohada > >> --- > >> fs/exfat/dir.c | 16 ++-- > >> fs/exfat/exfat_fs.h | 2 -- > >> fs/exfat/file.c | 2 -- > >> fs/exfat/inode.c| 3 --- > >> fs/exfat/super.c| 1 - > >> 5 files changed, 6 insertions(+), 18 deletions(-) > >> > >> diff --git a/fs/exfat/dir.c b/fs/exfat/dir.c index > >> a9b13ae3f325..fa5bb72aa295 100644 > >> --- a/fs/exfat/dir.c > >> +++ b/fs/exfat/dir.c > > [snip] > >> sector @@ -262,13 +260,11 @@ static int exfat_iterate(struct file > >> *filp, struct dir_context *ctx) > >>goto end_of_dir; > >>} > >> > >> - cpos = EXFAT_DEN_TO_B(ei->rwoffset); > >> - > >>if (!nb->lfn[0]) > >>goto end_of_dir; > >> > >>i_pos = ((loff_t)ei->start_clu << 32) | > >> - ((ei->rwoffset - 1) & 0x); > >> + (EXFAT_B_TO_DEN(cpos-1) & 0x); > > > > Need to fix the above line to be: > > (EXFAT_B_TO_DEN(cpos)-1)) & 0x); > > > Here, we simply converted so that the calculation results would be the > same. > But after reading it carefully again, I noticed. > - Why use the previous entry? > - Why does cpos point to stream dir-entry in entry-set? > > For the former, there is no need to "++dentry" in exfat_readdir(). > For the latter, I think cpos should point to the next to current entry-set. > > I'll make V2 considering these. > How do you think? The latter looks better. > > BR > --- > Tetsuhiro Kohada
Re: [PATCH] exfat: remove 'rwoffset' in exfat_inode_info
On 2020/09/12 14:01, Sungjong Seo wrote: Remove 'rwoffset' in exfat_inode_info and replace it with the parameter(cpos) of exfat_readdir. Since rwoffset of is referenced only by exfat_readdir, it is not necessary a exfat_inode_info's member. Signed-off-by: Tetsuhiro Kohada --- fs/exfat/dir.c | 16 ++-- fs/exfat/exfat_fs.h | 2 -- fs/exfat/file.c | 2 -- fs/exfat/inode.c| 3 --- fs/exfat/super.c| 1 - 5 files changed, 6 insertions(+), 18 deletions(-) diff --git a/fs/exfat/dir.c b/fs/exfat/dir.c index a9b13ae3f325..fa5bb72aa295 100644 --- a/fs/exfat/dir.c +++ b/fs/exfat/dir.c [snip] sector @@ -262,13 +260,11 @@ static int exfat_iterate(struct file *filp, struct dir_context *ctx) goto end_of_dir; } - cpos = EXFAT_DEN_TO_B(ei->rwoffset); - if (!nb->lfn[0]) goto end_of_dir; i_pos = ((loff_t)ei->start_clu << 32) | - ((ei->rwoffset - 1) & 0x); + (EXFAT_B_TO_DEN(cpos-1) & 0x); Need to fix the above line to be: (EXFAT_B_TO_DEN(cpos)-1)) & 0x); Here, we simply converted so that the calculation results would be the same. But after reading it carefully again, I noticed. - Why use the previous entry? - Why does cpos point to stream dir-entry in entry-set? For the former, there is no need to "++dentry" in exfat_readdir(). For the latter, I think cpos should point to the next to current entry-set. I'll make V2 considering these. How do you think? BR --- Tetsuhiro Kohada
RE: [PATCH] exfat: remove 'rwoffset' in exfat_inode_info
> Remove 'rwoffset' in exfat_inode_info and replace it with the > parameter(cpos) of exfat_readdir. > Since rwoffset of is referenced only by exfat_readdir, it is not > necessary a exfat_inode_info's member. > > Signed-off-by: Tetsuhiro Kohada > --- > fs/exfat/dir.c | 16 ++-- > fs/exfat/exfat_fs.h | 2 -- > fs/exfat/file.c | 2 -- > fs/exfat/inode.c| 3 --- > fs/exfat/super.c| 1 - > 5 files changed, 6 insertions(+), 18 deletions(-) > > diff --git a/fs/exfat/dir.c b/fs/exfat/dir.c index > a9b13ae3f325..fa5bb72aa295 100644 > --- a/fs/exfat/dir.c > +++ b/fs/exfat/dir.c [snip] > sector @@ -262,13 +260,11 @@ static int exfat_iterate(struct file *filp, > struct dir_context *ctx) > goto end_of_dir; > } > > - cpos = EXFAT_DEN_TO_B(ei->rwoffset); > - > if (!nb->lfn[0]) > goto end_of_dir; > > i_pos = ((loff_t)ei->start_clu << 32) | > - ((ei->rwoffset - 1) & 0x); > + (EXFAT_B_TO_DEN(cpos-1) & 0x); Need to fix the above line to be: (EXFAT_B_TO_DEN(cpos)-1)) & 0x);