ThinClientLocalDevicesForwardConnection
Launchpad Entry: https://launchpad.net/distros/ubuntu/+spec/thinclient-local-devices
Created: 2005-10-31 by IanJackson
Contributors: IanJackson
Packages affected:
Related: other plan for the same thing: ThinClientLocalDevices
Design
Use ltspfs as follows:
When new device appears at client, client calls:
- ssh server .../ltspfs-device details details details
ltspfs-device does the following things:
- Finds a mountpoint on the server for the new device
- Mounts an ltspfs on this mountpoint, where the ltspfs protocol runs over the stdin/stdout connection provided by the ssh (the ltspfs server runs on the client)
- Finds the session's dbus (from the provided details) and notifies it of the new device and mountpoint (just like the current udev scripts). This will cause the device and its contents to appear in the Nautilus etc.
- Waits for something else to happen, eg:
- When the ssh session terminates (ie, it loses stdin/stdout): umount the fs; notify the session dbus (if it is still running) that the device has gone away
- When notified by eject that the device is to be ejected, send an ltspfs eject request
- When notified (by punmount?) that the device is to be unmounted, unmount it on the server (causing ltspfs unmount request)
- When notified somehow that user wants it mounted again via Nautilus, remount it
On the client, we replace the dbus-notifying udev script with a script which:
- Starts the ltspfs server for the device
- Connects the ltspfs server to ssh server ltspfs-device
(No dbus is needed at the client end since all the necessary dbus communication is done by ltspfs-server)
Implementation
ltspfs will need slight hacking to cope with separate reading and writing fds (currently it uses only one socket, but of course the ssh connection involves two fds, both pipes).
ltspfs will either need support for mounting unmounting and ejecting, or a very simple wrapper protocol will have to be invented.
The machinery uses by Nautilus for ejecting, mounting and unmounting will have to be provided with a new mechanism which talks to the ltspfs-device "server" (eg, via dbus).
Code
Data preservation and migration
N/R
Outstanding issues
BoF agenda and discussion
ThinClientLocalDevicesForwardConnection (last edited 2008-08-06 16:23:37 by localhost)