From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
To: zhoumin <teczm@foxmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] vfat:avoid unnecessary check
Date: Fri, 05 Sep 2025 04:01:43 +0900 [thread overview]
Message-ID: <87bjnqkpns.fsf@mail.parknet.co.jp> (raw)
In-Reply-To: <tencent_C19E4D9448D8514A505A9FE439D01C333B08@qq.com>
zhoumin <teczm@foxmail.com> writes:
> Remove redundant and unreachable name check code in dir.c.
Looks like you changed the logic, but no explanation.
> Remove flags check in fat_update_time since fat does not support
> inode version.
>
> Optimize fat_truncate_time to return a meaningful value, allowing
> the removal of redundant inode checks in fat_update_time. This
> ensures non-root inodes are validated only once.
Also changed the logic, you removed the check of flags.
The change may not have the issue, however please change and explain
more carefully.
Thanks.
> Signed-off-by: zhoumin <teczm@foxmail.com>
> ---
> fs/fat/dir.c | 12 ++++--------
> fs/fat/misc.c | 11 ++++-------
> 2 files changed, 8 insertions(+), 15 deletions(-)
>
> diff --git a/fs/fat/dir.c b/fs/fat/dir.c
> index acbec5bdd521..4f1be9939292 100644
> --- a/fs/fat/dir.c
> +++ b/fs/fat/dir.c
> @@ -337,11 +337,11 @@ static int fat_parse_long(struct inode *dir, loff_t *pos,
> if (ds->alias_checksum != alias_checksum)
> goto parse_long;
> }
> - if ((*de)->name[0] == DELETED_FLAG)
> + if (IS_FREE((*de)->name))
> return PARSE_INVALID;
> if ((*de)->attr == ATTR_EXT)
> goto parse_long;
> - if (IS_FREE((*de)->name) || ((*de)->attr & ATTR_VOLUME))
> + if ((*de)->attr & ATTR_VOLUME)
> return PARSE_INVALID;
> if (fat_checksum((*de)->name) != alias_checksum)
> *nr_slots = 0;
> @@ -491,12 +491,10 @@ int fat_search_long(struct inode *inode, const unsigned char *name,
> goto end_of_dir;
> parse_record:
> nr_slots = 0;
> - if (de->name[0] == DELETED_FLAG)
> + if (IS_FREE(de->name))
> continue;
> if (de->attr != ATTR_EXT && (de->attr & ATTR_VOLUME))
> continue;
> - if (de->attr != ATTR_EXT && IS_FREE(de->name))
> - continue;
> if (de->attr == ATTR_EXT) {
> int status = fat_parse_long(inode, &cpos, &bh, &de,
> &unicode, &nr_slots);
> @@ -608,12 +606,10 @@ static int __fat_readdir(struct inode *inode, struct file *file,
> * need to parse long filename.
> */
> if (isvfat && !short_only) {
> - if (de->name[0] == DELETED_FLAG)
> + if (IS_FREE(de->name))
> goto record_end;
> if (de->attr != ATTR_EXT && (de->attr & ATTR_VOLUME))
> goto record_end;
> - if (de->attr != ATTR_EXT && IS_FREE(de->name))
> - goto record_end;
> } else {
> if ((de->attr & ATTR_VOLUME) || IS_FREE(de->name))
> goto record_end;
> diff --git a/fs/fat/misc.c b/fs/fat/misc.c
> index c7a2d27120ba..41f6362a0428 100644
> --- a/fs/fat/misc.c
> +++ b/fs/fat/misc.c
> @@ -335,7 +335,7 @@ int fat_truncate_time(struct inode *inode, struct timespec64 *now, int flags)
> inode_set_mtime_to_ts(inode,
> inode_set_ctime_to_ts(inode, fat_truncate_mtime(sbi, now)));
>
> - return 0;
> + return 1;
> }
> EXPORT_SYMBOL_GPL(fat_truncate_time);
>
> @@ -343,18 +343,15 @@ int fat_update_time(struct inode *inode, int flags)
> {
> int dirty_flags = 0;
>
> - if (inode->i_ino == MSDOS_ROOT_INO)
> - return 0;
> -
> - if (flags & (S_ATIME | S_CTIME | S_MTIME)) {
> - fat_truncate_time(inode, NULL, flags);
> + if (fat_truncate_time(inode, NULL, flags)) {
> if (inode->i_sb->s_flags & SB_LAZYTIME)
> dirty_flags |= I_DIRTY_TIME;
> else
> dirty_flags |= I_DIRTY_SYNC;
> +
> + __mark_inode_dirty(inode, dirty_flags);
> }
>
> - __mark_inode_dirty(inode, dirty_flags);
> return 0;
> }
> EXPORT_SYMBOL_GPL(fat_update_time);
--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
next prev parent reply other threads:[~2025-09-04 19:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-04 16:17 zhoumin
2025-09-04 19:01 ` OGAWA Hirofumi [this message]
2025-09-05 15:49 ` zhoumin
2025-09-05 16:37 ` OGAWA Hirofumi
2025-09-06 15:13 ` zhoumin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87bjnqkpns.fsf@mail.parknet.co.jp \
--to=hirofumi@mail.parknet.co.jp \
--cc=linux-kernel@vger.kernel.org \
--cc=teczm@foxmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®