-
-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fuse pb regression: could not convert protobuf or raw node #9044
Comments
also reproduced with official https://github.com/ipfs/go-ipfs/releases/download/v0.13.0/go-ipfs_v0.13.0_linux-amd64.tar.gz |
The FUSE mount functionality of IPFS was broken by the update to v0.13.0, so disable it. Hopefully it will be fixed soon. See ipfs/kubo#9044.
@Jorropo wonder if this might be related to invalid codec mapping in go-cid, see BREAKING CHANGE fix in https://github.com/ipfs/go-cid/releases/tag/v0.2.0 Really concerning that we have no tests for FUSE that would catch this regression – whoever will be fixing this, should also add sharness test for UnixFS DAG that has both dag-pb and raw file items. |
By debugging with ipfs 0.12 and 0.17, using the followings command
I could find that there is a difference of path taken in kubo/fuse/readonly/readonly_unix.go Line 92 in a6f446a
In ipfs 0.12, nd is of type It then goes in here https://github.com/ipfs/kubo/blob/master/fuse/readonly/readonly_unix.go#L95 and get the substrate and run In ipfs 0.17, nd is of type Then it goes in https://github.com/ipfs/kubo/blob/master/fuse/readonly/readonly_unix.go#L95 and ProtoNodeConverter returns an error because nd is not a I'm not familiar with those concepts, so the amount of knowledge to have to debug this issues seems a bit overwhelming to me. But with some guidance, may be I can help. Most of my day to day life relies on using ipfs mount and using ipfs content like any other files. It has been very annying to have to resort to ipfs cat, ipfs get or the gateway to just read a file. Therefore, I am quite motivated to make this work. Of course, during the time I can spare to this task. I guess my next action in this project would be to try to understand what are those PBNode about, right? |
PB probably stands for ProtoBuf which is the encoding-method of metadata. E.g. the DAG-PB (Directed Acyclic Graph) contains a list of entries that each have Size, Name, CID In (unrelated) https://github.com/bmwiedemann/ipfs-iso-jigsaw/blob/master/ipfsjigsaw.py I also construct a custom PBNode from python. |
Thank you
|
Digging into ipfs, ipld, PBNode, ADL etc looks like a pretty big rabbit hole to me. I realized that, in term of functionality, the ipfs gateway is very similar to the fuse mount point: it provides access to the data. So I figure there should be also a lookup-like method in the gateway code. I intuitively think that if I find this code, I can either
Does this idea make sense? |
This problem still exists in 0.21.0 |
BTW, my ongoing investigation on the subject is here -> https://konubinix.eu/braindump/f9f882e4-0d84-453e-b3aa-5e34e411b90d?title=ipfs_mount_0_12_2_does_not_work_for_several_files It moves into my someday/maybe list, because I have more important matters now, and learning about ipfs, ipld, boxo and stuffs like that needs quite a lot of cognitive load. But because I have the frustration everyday of having to work around this issue, I will definitely continue working on this, so stay tuned :-). Of course, if someone fix it before I do, I would be verrrrry grateful. |
still broken in 0.22.0 |
I ran a git bisect between 0.12.2 and 0.13.0 and found
Specifically reverting this part, fixes fuse: - github.com/ipfs/go-graphsync v0.11.0
+ github.com/ipfs/go-graphsync v0.13.1
- github.com/ipfs/go-unixfsnode v1.1.3
+ github.com/ipfs/go-unixfsnode v1.4.0 and I further narrowed it down to 12 commits in |
It seems, ipfs/go-unixfsnode#14 by @willscott broke fuse. |
Thanks for tracking this down, @bmwiedemann ! It's not obvious to me exactly how the update of unixfsprime from 2 years ago broke fuse. One thing that is immediately clear is that this is an unhelpful error message, in that the actual error is not printed. |
with 10102 ontop of 0.22.0 I get
|
My guess at fixing the immediate regression is ipfs/go-unixfsnode#67 |
new version of go-unixfsnode released with that change and a few other fixes |
Fixes ipfs#9044 regression in 0.13.0 FUSE access to some files
Fixes ipfs#9044 regression in 0.13.0 FUSE access to some files
Fixes ipfs#9044 regression in 0.13.0 FUSE access to some files
Fixes #9044 regression in 0.13.0 FUSE access to some files
Reopening as Details and repro steps: #10243 (comment) – take a look if you had good intuition on this before 🙏 |
See also #10242, which I created just for this new problem. |
Triage notes:
We won't have bandwidth to fix this any time soon, |
Checklist
Installation method
built from source
Version
Config
Description
I noticed that a number of my files stopped working in the fuse mount after upgrade from go-ipfs 0.12.0 to 0.13.0 e.g.
while
ipfs cat
still works fine.It seems to affect all the bafybei (pb) objects, but the bafkrei (raw data) files work fine.
The text was updated successfully, but these errors were encountered: