mirror of
https://github.com/deepseek-ai/3FS.git
synced 2026-11-05 00:47:47 +00:00
[PR #421] fix(python): avoid userdata reference cycle in FUSE demo #427
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/3FS#427
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/deepseek-ai/3FS/pull/421
Author: @030611
Created: 8/11/2026
Status: 🔄 Open
Base:
main← Head:fix/fuse-userdata-cycle-386📝 Commits (1)
8ab2efcfix(python): avoid userdata reference cycle in FUSE demo📊 Changes
2 files changed (+5 additions, -4 deletions)
View changed files
📝
hf3fs_fuse/fuse_demo.py(+4 -3)📝
src/lib/py/usrbio_binding.cc(+1 -1)📄 Description
Fixes #386.
The FUSE demo passes the full io tuple as userdata. That tuple contains the same iovec wrapper being prepared, while the C++ iov retains userdata through completion. This creates a wrapper -> C++ iov -> tuple -> wrapper cycle across the Python/C++ boundary.
Pass the expected byte count as scalar userdata instead, preserving the existing completion check without retaining the wrapper. Also clarify the userdata lifetime contract in the binding documentation.
Validation:
I could not run the FUSE/RDMA path locally. This does not change usrbio runtime ownership and does not address the separate prepare() error path.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.