Skip to content

fix: ufs filetype miss and get_status error#242

Merged
bigbigxu merged 1 commit intoCurvineIO:mainfrom
201341:swj/fix_ufs
Sep 4, 2025
Merged

fix: ufs filetype miss and get_status error#242
bigbigxu merged 1 commit intoCurvineIO:mainfrom
201341:swj/fix_ufs

Conversation

@201341
Copy link
Copy Markdown
Contributor

@201341 201341 commented Sep 4, 2025

No description provided.

Signed-off-by: swj <1186093704@qq.com>
None => self.cv.get_status(path).await,
Some((ufs_path, mount)) => mount.ufs.get_status(&ufs_path).await,
Some((ufs_path, mount)) => {
if mount.info.cv_path == path.path() {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This destroys the semantics of transparent transmission. Even if you want to access the root directory of the mount point, you still need to access ufs directly.

Copy link
Copy Markdown
Contributor Author

@201341 201341 Sep 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For ufs mount point, it is created on the cv filesystem, when detecting the mount point path, get status results should come from cv, not ufs. It's a bug fix

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In Curvine, a mount point is simply a virtual directory mapped directly to the UFS. All metadata access must be transparently passed to the UFS.

If you need to view files in Curvine, you can do so by setting enable_unified to false.

Copy link
Copy Markdown
Contributor Author

@201341 201341 Sep 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I set enable_unified to true, the ufs mount point is created on cv filesystem, For fuse, need to lookup the ufs mount point first, and then fuse can lookup next level. When I mount the s3 bucket on the cv path, the ufs root dir can't be found through ufs directly, so there must be a special handle.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you are right

match self.get_mount(path).await? {
None => self.cv.get_status_bytes(path).await,
Some((ufs_path, mount)) => mount.ufs.get_status_bytes(&ufs_path).await,
Some((ufs_path, mount)) => {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This destroys the semantics of transparent transmission. Even if you want to access the root directory of the mount point, you still need to access ufs directly.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

@bigbigxu bigbigxu merged commit b9b9c0d into CurvineIO:main Sep 4, 2025
3 checks passed
@lzjqsdd lzjqsdd added the bug Something isn't working label Sep 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants