Filesystem Hierarchy

I hadn’t even looked at the Drive repo! I think that’s really what I’m looking for. The rust implementation on github is empty, and the C++ version I can’t seem to find. (EDIT: found at MaidSafe-Archive · GitHub)

So, if I understand the hierarchy, anything on the datamap will point to a globally unique Blob. That Blob will contain the metadata that tells the NFS where to put the files contained within that Blob onto my Drive (the representation that looks like a normal filesystem). If I wanted to change the absolute pathname, would I then have to create a new Blob that pointed to (symlinked) the existing Blob as the one having the actual content? That blob would then have different metadata as to where to store the returned files on my drive.

Or would this be better handled at the Drive level perhaps? I did see that:

Which makes sense, but if the file that I was linking to was someone else’s on a public directory, it wouldn’t be in my own datamap, unless I put it there. And if putting it there requires a Blob, I could just specify the existing Blob in your datamap. But if you want to assign that to a different place in the filesystem (a.k.a. give it different metadata) I must create a new Blob. Then that Blob would be a placeholder that pointed to the actual data in the original Blob. If so, that means that any symlinks require a PUT cost.

I’ve been bouncing around trying to see how this symlinking ability interacts among the datamap, blob/container NFS, and Drive levels. This may just be implemented at Drive level. I guess I’ll have to see what documentation I can dredge up, and ask around a bit.

P.S. @happybeing hands down the best datamap ↔ NFS explanation that I’ve read so far. Thanks!

1 Like