components/dfs: unify vnode lock names - #11668
Conversation
Using full paths as mutex object names triggers RT_NAME_MAX warnings for long file names. Add dfs_vnode_lock_init to generate short vn-xxxx names from the full-path CRC32, and migrate tmpfs and elmfat to the common helper. Impact: DFS v2 vnode mutex object names only.\nVerified by the qemu-virt64-aarch64 cross-build and QEMU /bin/ls test.
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: componentsReviewers: @Maihuanyi Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-07-31 09:46 CST)
📝 Review Instructions
|
|
Align the vnode lock name formatting with the repository style. Suppress two cppcheck uninitvar false positives caused by the tmpfs intrusive-list iterator. The affected fields are initialized when each tmpfs node is created. Validation: - clang-format 22.1.8 on all PR changed lines - cppcheck 2.21.0 on all changed C files - git diff --check
There was a problem hiding this comment.
Pull request overview
This PR aims to avoid RT_NAME_MAX warnings caused by using full paths as vnode mutex names in DFS v2, by introducing a common helper that derives a short lock name from the vnode’s full-path CRC32 and migrating tmpfs/elmfat to use it.
本次 PR 旨在解决 DFS v2 中使用完整路径作为 vnode 互斥锁对象名导致的 RT_NAME_MAX 超长告警:新增通用初始化函数,通过 dentry 全路径 CRC32 生成短名称,并将 tmpfs/elmfat 迁移到该通用实现。
Changes / 变更点:
- Add
dfs_vnode_lock_init()to generate short vnode lock names based ondfs_dentry_full_path_crc32()/ 新增dfs_vnode_lock_init(),基于全路径 CRC32 生成短锁名 - Export the helper in
dfs_file.hand use it in tmpfs and elmfat open paths / 在dfs_file.h中导出声明,并在 tmpfs/elmfat 的 open 路径中使用 - Add two
cppcheck-suppress uninitvarsuppressions in tmpfs / 在 tmpfs 中新增两处 cppcheck 抑制注释
PR meta issues to address / PR 元信息需要补充:
- Title format: current title does not follow the required lowercase
[module][subsystem] ...prefix format. Suggested:[dfs][v2] unify vnode lock names(or another subsystem tag that matches maintainer expectations).
标题格式:当前标题不符合要求的小写前缀格式[模块][子系统] ...,建议改为类似:[dfs][v2] unify vnode lock names。 - Description completeness: the template block is still present and BSP /
.config/ action link fields are not filled.
描述完整性:PR 描述中模板内容仍保留,且 BSP /.config/ action 链接未填写,建议补全以满足合入要求。
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| components/dfs/dfs_v2/src/dfs_vnode.c | Adds common dfs_vnode_lock_init() and depends on dentry CRC32 for lock naming |
| components/dfs/dfs_v2/include/dfs_file.h | Exposes the new vnode lock init helper API |
| components/dfs/dfs_v2/filesystems/tmpfs/dfs_tmpfs.c | Switches vnode lock init to the helper; adds cppcheck suppressions |
| components/dfs/dfs_v2/filesystems/elmfat/dfs_elm.c | Switches vnode lock init to the helper in directory and file open paths |
| path_hash = dfs_dentry_full_path_crc32(dentry); | ||
| rt_snprintf(lock_name, sizeof(lock_name), "vn-%04x", | ||
| (unsigned int)(path_hash & 0xffffU)); | ||
|
|
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
你的解决方案是什么 (what is your solution)
Using full paths as mutex object names triggers RT_NAME_MAX warnings for long file names.
Add dfs_vnode_lock_init to generate short vn-xxxx names from the full-path CRC32, and migrate tmpfs and elmfat to the common helper.
Impact: DFS v2 vnode mutex object names only.\nVerified by the qemu-virt64-aarch64 cross-build and QEMU /bin/ls test.
请提供验证的bsp和config (provide the config and bsp)
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up