.. _local-drives:

Accessing the Clients Local Drives
----------------------------------

Introduction
~~~~~~~~~~~~

Using ThinLinc, it is possible to access the clients' drives and
filesystems from the ThinLinc session. With thin terminals, one might
want to access a local CD-ROM drive. When running the client on a
workstation, applications on the remote desktop server can access all
filesystems mounted at the workstation, just like local applications
can.

.. note::

   Many Digital Cameras can be accessed as a USB storage device, and can
   be exported as a local drive.

Mounting and Unmounting Local Drives
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The exported local drives can be mounted with the command
tl-mount-localdrives . The drives will be mounted below
:file:`$TLSESSIONDATA/drives`. A symbolic link called :file:`thindrives`
will be created in the user's home directory, pointing to this
directory. The syntax for :program:`tl-mount-localdrives` is:

tl-mount-localdrives [**-h**] [**-v**]

The :option:`-v` option causes the tool to be executed in verbose mode,
while :option:`-h` shows the syntax.

The Hiveconf parameter
:servconf:`/utils/tl-mount-localdrives/mount_args` specifies the mount
arguments. This Hiveconf parameter is normally found in
:file:`/opt/thinlinc/etc/conf.d/tl-mount-localdrives.hconf`. The options
``mountport``, ``port``, ``mountvers``, ``nfsvers``, ``nolock``, and
``tcp`` will always be used.

Mounted local drives can be unmounted with the command
:program:`tl-umount-localdrives`. If some applications are using a mount
at this time, they can continue to access the mount, even though the
mount has been removed from the filesystem hierarchy (so called "lazy"
umount). The syntax for :program:`tl-umount-localdrives` is:

tl-umount-localdrives [**-a**] [**-s**] [**-l**]

If :option:`-a` is specified, then all mounted local drives, for all
users on this machine, will be unmounted. If :option:`-s` is specified,
then all mounted local drives, for all sessions belonging to the current
user, will be unmounted. If :option:`-l` is specified, the
:file:`thindrives` link will not be updated.

.. note::

   When using multiple sessions per user, the :file:`thindrives` link
   will point to the newest session that executed
   :program:`tl-mount-localdrives`. :program:`tl-umount-localdrives`
   will restore the link to the newest session which is not newer than
   the current session and which has mounted local drives.

Mounting Drives at Login
~~~~~~~~~~~~~~~~~~~~~~~~

Often, it's convenient to automatically mount all local drives for a
user when the session starts. This is done by default via a symbolic
link in :file:`/opt/thinlinc/etc/xstartup.d`, pointing at
:program:`/opt/thinlinc/bin/tl-mount-localdrives`. This link is created
for you during installation, as well as its counterpart in
:file:`/opt/thinlinc/etc/xlogout.d` which points to
:program:`/opt/thinlinc/bin/tl-umount-localdrives`.

Limitations and additional information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

-  Linux kernel 2.6.23 or later is required.

-  A mounted local drive, for example
   :file:`/var/opt/thinlinc/sessions/johndoe/47/drives/cdrom`, is only
   usable during the lifetime of the ThinLinc session. If the user ends
   the session without unmounting and then starts a new session, the
   mount will not be usable even if the session number happens to be
   same. In this case, any attempts to access the mount will give the
   error message "Stale NFS file handle". To be able to use the local
   drive, the user needs to run :program:`tl-mount-localdrives`.

-  The mounted local drive does not fully support POSIX semantics. The
   usual limitations of NFSv3 applies. Additionally, if the file is
   moved to another directory while a process has the file open, the
   process will get a "Stale NFS file handle" error on any subsequent
   file operation for that file.

-  Local files are uniquely identified by their inode number. Some file
   system implementations, such as the Linux kernel FAT implementation,
   do not provide persistant inode numbers. Inode numbers will change on
   each remount, which usually results in "Stale NFS file handle"
   errors.
