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)


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).


Data preservation and migration


Outstanding issues

BoF agenda and discussion


ThinClientLocalDevicesForwardConnection (last edited 2008-08-06 16:23:37 by localhost)