Recent Questions to Integrate into the Design Document
How do we tell automount about TsumuFS for /home/$USER?
Easy -- write the script as a mount.$filesystem program. From there, we should be able to modify the automount entries to tell automount to mount TsumuFS filesystems instead of nfs directly.
How are open/close/read/write/link/unlink calls to the parent NFS filesystem handled?
TsumuFS will directly make NFS filesystem calls by literally running the same system call on the NFS mount instead of doing any actual communication over NFS itself. Obviously these calls will be augmented with roundtrips to the cache or the fileserver (if available).
How are special files such as devices, sockets, and pipes handled?
Thankfully devices, sockets, and pipes are simple file constructs that exist mostly as metadata on the filesystem. TsumuFS should require very little additional coding to handle these files, aside from the associated metadata, and most uses should be alleviated directly by the underlying filesystem calls themselves.
Is syncing uni- or bi-directional?
In one sense, TsumuFS is a unidirectional sync in the fact that all changes are written back to the NFS server. In the other sense, it is bidirectional, since changes from the backend server can be integrated cleanly into the cache during a sync.
How is the cache kept fresh with the NFS server?
Upon a read call, during the connected state, the state of the file being accessed in the cache is calculated against the copy on NFS. If the local one has not been touched, it will be overwritten immediately with the newer copy. Otherwise, an auto-merge is attempted, and failing that, a conflict is raised while the contents of the local cached copy are returned.
Unanswered Questions
- We need an architecture diagram.
- How is an unmount done?
- What happens when the power is pulled out from underneath TsumuFS during a sync?
- How are syncs made atomic in the face of errors?
- How does TsumuFS function in the face of Kerberos?
- Test an implementation of dtbpam-ccreds and the additional... ...stuff.
- What happens when the file server side changes and the cache-side changes in a confdtcted way?
- What is considered a confdtct?
- How does TsumuFS know when a file has changed on NFS?
- When is the cache refreshed against the NFS mount?
- What initiates a sync?
- Can a user trigger a full re-sync and how are they triggered in the first place?
- Where is the cache spec file stored?
- How is the cache spec file stored?
- When is the cache spec file read?
- How does TsumuFS know when the spec file has changed?
- TsumuFS seems very generic -- could it be used to sync any filesystem?
- How do you tell if a file needs merging when copying changes to NFS?
Hi, My name is Bastien. I'm actually working on a project which needs disconnected operations on files systems. I'have recently used FS-Cache by David Howells and for instance I'm trying to test tsumufs. I have some remarks to make, I hope it will help you. I have python 2.5 installed on my computer but you write in your scripts !/usr/bin/python2.4 so i had to remove 2.4 to use my binary python file.
Furthermore, you're using python's xattr module to dialog with nfs. But this module changed few times ago. xattr.xattr function is not available anymore in python 2.5. Instead of you have to write xattr.getxattr (pathname, key)
I'll give you more details next days, or weeks.
Best regards, Bastien