mirror of
https://github.com/deepseek-ai/3FS
synced 2025-06-26 18:16:45 +00:00
Initial commit
This commit is contained in:
30
hf3fs_fuse/fuse_demo.py
Normal file
30
hf3fs_fuse/fuse_demo.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from hf3fs_fuse.io import make_iovec, make_ioring, register_fd, deregister_fd
|
||||
from multiprocessing.shared_memory import SharedMemory
|
||||
import os
|
||||
|
||||
# Create memory for IO
|
||||
shm = SharedMemory(size=1024, create=True)
|
||||
iov = make_iovec(shm, '/hf3fs-cluster', 0, -1) # shm, mountpoint, blocksize, numa
|
||||
shm.unlink() # shm can be unlinked after make_iovec
|
||||
|
||||
# Create ioring for IO
|
||||
ior = make_ioring('/hf3fs-cluster', 100, True, 0) # mountpoint, num_entries, for_read, io_depth
|
||||
|
||||
# Open file
|
||||
fd = os.open('/hf3fs-cluster/testread', os.O_RDONLY)
|
||||
register_fd(fd) # must register after open to use usrbio
|
||||
|
||||
# Read file
|
||||
ios = [(iov[:512], fd, 512), (iov[512:], fd, 0)] # iov, fd, offset
|
||||
for io in ios:
|
||||
ior.prepare(io[0], True, io[1], io[2], userdata=io) # iov, for_read, fd, offset, userdata
|
||||
# Only for_read == True is allowed, because ior has for_read == True
|
||||
# userdata must be a referenced python object, we reference io in the list ios, so it will not be sent to GC
|
||||
resv = ior.submit().wait(min_results=2)
|
||||
for res in resv:
|
||||
print(res.result)
|
||||
assert res.result == len(memoryview(res.userdata[0])) # Check read length is correct
|
||||
|
||||
# Close file
|
||||
deregister_fd(fd) # must deregister before close
|
||||
os.close(fd)
|
||||
Reference in New Issue
Block a user