quot;,
> Before : 0m08.69s real 0m00.27s user 0m05.91s system
> After : 0m07.01s real 0m00.25s user 0m04.34s system
>
> Signed-off-by: Hyeongseok Kim
Looks good.
Thanks for your contribution.
Reviewed-by: Sungjong Seo
> ---
> fs/exfat/dir.c | 19
> When directory iterate and lookup is called, there's a buggy rewinding of
> start point for traversing cluster chain to the parent directory entry's
> first cluster. This caused repeated cluster chain traversing from the
> first entry of the parent directory that would show worse performance if
>
> When directory iterate and lookup is called, there is a buggy rewinding of
> start point for traversing fat chain to the directory entry's first
> cluster. This caused repeated fat chain traversing from the first entry of
> the directory that would show worse performance if huge amounts of files
k Kim
Looks good.
Thanks for your work.
Acked-by: Sungjong Seo
gt; fs/exfat/balloc.c | 80 +
> fs/exfat/dir.c | 5 +++
> fs/exfat/exfat_fs.h | 4 +++
> fs/exfat/file.c | 53 ++
> 4 files changed, 142 insertions(+)
>
It looks better than v3.
Thanks for your work!
Ac
work!
Acked-by: Sungjong Seo
h is 2, leading
> to discard unrelated sectors included in target+2 cluster.
>
> Fixes: 1e49a94cf707 ("exfat: add bitmap operations")
> Signed-off-by: Hyeongseok Kim
> ---
> fs/exfat/balloc.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
Looks good.
KiB
> IO unplugs:1 Timer unplugs: 0
>
> Signed-off-by: Hyeongseok Kim
Looks good.
Thanks for your work!
Acked-by: Sungjong Seo
do_syscall_64+0x4d/0x90
> entry_SYSCALL_64_after_hwframe+0x44/0xa9
>
> Convert kcalloc/kfree to their kv* variants to eliminate the issue.
>
> Cc: sta...@vger.kernel.org # v5.7+
> Signed-off-by: Artem Labazov <123321art...@gmail.com>
Looks good.
Thanks for your contri
> > I have not yet received a report of the same issue.
> > But I agree that this problem is likely to occur even if it is low
> > probability.
>
> Perhaps I should clarify my setup a little bit more.
> The issue can be reliably reproduced on my laptop. It has 8 GBs of RAM
> (pretty common amount
> The table for Unicode upcase conversion requires an order-5 allocation,
> which may fail on a highly-fragmented system:
>
> pool-udisksd: page allocation failure: order:5,
> mode:0x40dc0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO),
> nodemask=(null),cpuset=/,mems_allowed=0
> CPU: 4 PID: 3756880 Comm: po
And as far as I understand, it seems to check once more "the cluster number"
even though it comes through vfs so that it tries detecting abnormal of on-disk.
Anyway, I agonized if it is really needed.
In conclusion, old code could be eliminated and your patch looks reasonable.
Thanks
A
> 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_
n the index
> of dir-entry via dir_entry->entry.
>
> Signed-off-by: Tetsuhiro Kohada
Acked-by: Sungjong Seo
> ---
> Changes in v2
> - 'cpos' point to the next of entry-set
> - return the index of dir-entry via dir_entry->entry
> - fix commit-me
> In exfat_move_file(), the identity of source and target directory has been
> checked by the caller.
> Also, it gets stream.start_clu from file dir-entry, which is an invalid
> determination.
>
> Signed-off-by: Tetsuhiro Kohada
> ---
> fs/exfat/namei.c | 5 -
> 1 file changed, 5 deletions(-
> Use structure assignment instead of memcpy.
>
> Signed-off-by: Tetsuhiro Kohada
Acked-by: Sungjong Seo
> ---
> fs/exfat/dir.c | 7 ++-
> fs/exfat/inode.c | 2 +-
> fs/exfat/namei.c | 15 +++
> 3 files changed, 10 insertions(+), 14 deletions(-)
&g
> There is nothing in directory just created, so there is no need to scan.
>
> Signed-off-by: Tetsuhiro Kohada
Acked-by: Sungjong Seo
> ---
> fs/exfat/namei.c | 11 +--
> 1 file changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/fs/exfat/namei.c
> 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 ++--
>
> The exfat_find_dir_entry() called by exfat_find() doesn't return -EEXIST.
> Therefore, the root-dir information setting is never executed.
>
> Signed-off-by: Tetsuhiro Kohada
Acked-by: Sungjong Seo
> ---
> fs/exfat/dir.c | 1 -
&g
> Thanks for your reply.
>
> On 2020/08/09 2:19, Sungjong Seo wrote:
> > [snip]
> >> @@ -963,80 +942,38 @@ int exfat_find_dir_entry(struct super_block
> >> *sb, struct exfat_inode_info *ei,
> >>num_empty = 0;
> >>
> On 2020/06/18 22:11, Sungjong Seo wrote:
> >> BTW
> >> Even with this patch applied, VOL_DIRTY remains until synced in the
> >> above case.
> >> It's not easy to reproduce as rmdir, but I'll try to fix it in the
> future.
> >
> &
> Name extraction in exfat_find_dir_entry() also doesn't care NameLength, so
> the name may be incorrect.
> Replace the name extraction in exfat_find_dir_entry() with using
> exfat_entry_set_cache and exfat_get_uniname_from_name_entries(),
> like exfat_readdir().
> Replace the name extraction with
> The current implementation doesn't care NameLength when extracting the
> name from Name dir-entries, so the name may be incorrect.
> (Without null-termination, Insufficient Name dir-entry, etc) Add a
> NameLength check when extracting the name from Name dir-entries to extract
> correct name.
> An
benign secondary'
> dir-entries.
>
> Pre-Validated 'file' and 'stream-ext' dir-entries are provided as member
> variables of exfat_entry_set_cache.
>
> And, rename TYPE_EXTEND to TYPE_NAME.
>
> Suggested-by: Sungjong Seo
> Suggested-by: Namjae Jeon
ype-validation with simplified.
> This will also recognize a dir-entry set that contains 'benign secondary'
> dir-entries.
>
> And, rename TYPE_EXTEND to TYPE_NAME.
>
> Suggested-by: Sungjong Seo
> Signed-off-by: Tetsuhiro Kohada
> ---
> fs/exfat/dir.c | 14
> Replace part of exfat_zeroed_cluster() with exfat_update_bhs().
> And remove exfat_sync_bhs().
>
> Signed-off-by: Tetsuhiro Kohada
Reviewed-by: Sungjong Seo
Looks good. Thanks.
> ---
> Changes in v2
> - Rebase to latest exfat-dev
>
&
> > Since this patch does not resolve 'VOL_DIRTY in ENOTEMPTY' problem you
> > mentioned, it would be better to remove the description above for that
> > and to make new patch.
>
> I mentioned rmdir as an example.
> However, this problem is not only with rmdirs.
> VOL_DIRTY remains when some funct
file.
Signed-off-by: Sungjong Seo
---
fs/exfat/dir.c | 2 +-
fs/exfat/exfat_fs.h | 1 +
fs/exfat/file.c | 19 ++-
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/fs/exfat/dir.c b/fs/exfat/dir.c
index 02acbb6ddf02..b71c540d88f2 100644
--- a/fs/exfat/dir.c
e exfat is remounted as
> read-only, exfat doesn't have a chance to commit metadata and vfs
> invalidates page caches in a block device.
>
> Signed-off-by: Hyunchul Lee
Acked-by: Sungjong Seo
> ---
> Changes from v1:
> - Does not check the return value of sync_filesystem
above for that and to make new
patch.
> Remove the EXFAT_SB_DIRTY check to ensure synchronization.
> And, remove the code related to the flag.
>
> Signed-off-by: Tetsuhiro Kohada
Reviewed-by: Sungjong Seo
> ---
> Changes in v2:
> - exfat_sync_fs() avoids synchronous proce
when non-empty-dir is detected,
> return error without setting EXFAT_SB_DIRTY.
> If performe 'sync' in this state, VOL_DIRTY will not be cleared.
>
> Remove the EXFAT_SB_DIRTY check to ensure synchronization.
> And, remove the code related to the flag.
>
> Sugges
> On 2020/06/12 17:34, Sungjong Seo wrote:
> >> remove EXFAT_SB_DIRTY flag and related codes.
> >>
> >> This flag is set/reset in exfat_put_super()/exfat_sync_fs() to avoid
> >> sync_blockdev().
> >> However ...
> >> - exfat_put_supe
> remove EXFAT_SB_DIRTY flag and related codes.
>
> This flag is set/reset in exfat_put_super()/exfat_sync_fs() to avoid
> sync_blockdev().
> However ...
> - exfat_put_super():
> Before calling this, the VFS has already called sync_filesystem(), so sync
> is never performed here.
> - exfat_sync_fs
> Add Boot-Regions verification specified in exFAT specification.
> Note that the checksum type is strongly related to the raw structure, so
> the'u32 'type is used to clarify the number of bits.
>
> Signed-off-by: Tetsuhiro Kohada
Reviewed-by: Sungjong Seo
> ---
> To clarify that it is a 16-bit checksum, the parts related to the 16-bit
> checksum are renamed and change type to u16.
> Furthermore, replace checksum calculation in exfat_load_upcase_table()
> with exfat_calc_checksum32().
>
> Signed-off-by: Tetsuhiro Kohada
Reviewe
> Separate the boot sector analysis to read_boot_sector().
> And add a check for the fs_name field.
> Furthermore, add a strict consistency check, because overlapping areas can
> cause serious corruption.
>
> Signed-off-by: Tetsuhiro Kohada
Reviewed-by: Sungjong Seo
>
> Aggregate PBR related definitions and redefine as "boot_sector" to comply
> with the exFAT specification.
> And, rename variable names including 'pbr'.
>
> Signed-off-by: Tetsuhiro Kohada
Reviewed-by: Sungjong Seo
> ---
> Changes in v2:
> - re
initions.
>
> Signed-off-by: Tetsuhiro Kohada
>
Reviewed-by: Sungjong Seo
> ---
> fs/exfat/dir.c | 197 +---
> fs/exfat/exfat_fs.h | 27 +++---
> fs/exfat/file.c | 15 ++--
> fs/exfat/inode.c| 53 +---
> f
> > [snip]
> >> +/* EXFAT: Main and Backup Boot Sector (512 bytes) */ struct
> >> +boot_sector {
> >> + __u8jmp_boot[BOOTSEC_JUMP_BOOT_LEN];
> >> + __u8oem_name[BOOTSEC_OEM_NAME_LEN];
> >
> > According to the exFAT specification, fs_name and BOOTSEC_FS_NAME_LEN
> > look better.
>
> Oops.
> Aggregate PBR related definitions and redefine as "boot_sector" to comply
> with the exFAT specification.
> And, rename variable names including 'pbr'.
>
> Signed-off-by: Tetsuhiro Kohada
> ---
> fs/exfat/exfat_fs.h | 2 +-
> fs/exfat/exfat_raw.h | 79 +++-
> 2020-05-27 17:00 GMT+09:00,
> kohada.tetsuh...@dc.mitsubishielectric.co.jp
> :
> > Thank you for your comment.
> >
> > >> +for (i = 0; i < es->num_bh; i++) {
> > >> +if (es->modified)
> > >> +exfat_update_bh(es->sb, es->bh[i], sync);
> > >
> > > Overall, i
> Optimize directory access based on exfat_entry_set_cache.
> - Hold bh instead of copied d-entry.
> - Modify bh->data directly instead of the copied d-entry.
> - Write back the retained bh instead of rescanning the d-entry-set.
> And
> - Remove unused cache related definitions.
>
> Signed-off
42 matches
Mail list logo