POHMELFS usage information.

Mount options.
All but index, number of crypto threads and maximum IO size can changed via remount.

idx=%u
 Each mountpoint is associated with a special index via this option.
 Administrator can add or remove servers from the given index, so all mounts,
 which were attached to it, are updated.
 Default it is 0.

trans_scan_timeout=%u
 This timeout, expressed in milliseconds, specifies time to scan transaction
 trees looking for stale requests, which have to be resent, or if number of
 retries exceed specified limit, dropped with error.
 Default is 5 seconds.

drop_scan_timeout=%u
 Internal timeout, expressed in milliseconds, which specifies how frequently
 inodes marked to be dropped are freed. It also specifies how frequently
 the system checks that servers have to be added or removed from current working set.
 Default is 1 second.

wait_on_page_timeout=%u
 Number of milliseconds to wait for reply from remote server for data reading command.
 If this timeout is exceeded, reading returns an error.
 Default is 5 seconds.

trans_retries=%u
 This is the number of times that a transaction will be resent to a server that did
 not answer for the last @trans_scan_timeout milliseconds.
 When the number of resends exceeds this limit, the transaction is completed with error.
 Default is 5 resends.

crypto_thread_num=%u
 Number of crypto processing threads. Threads are used both for RX and TX traffic.
 Default is 2, or no threads if crypto operations are not supported.

trans_max_pages=%u
 Maximum number of pages in a single transaction. This parameter also controls
 the number of pages,  allocated for crypto processing (each crypto thread has
 pool of pages, the number of which is equal to 'trans_max_pages'.
 Default is 100 pages.

crypto_fail_unsupported
 If specified, mount will fail if the server does not support requested crypto operations.
 By default mount will disable non-matching crypto operations.

mcache_timeout=%u
 Maximum number of milliseconds to wait for the mcache objects to be processed.
 Mcache includes locks (given lock should be granted by server), attributes (they should be
 fully received in the given timeframe).
 Default is 5 seconds.

Usage examples.

Add server server1.net:1025 into the working set with index $idx
with appropriate hash algorithm and key file and cipher algorithm, mode and key file:
$cfg A add -a server1.net -p 1025 -i $idx -K $hash_key -k $cipher_key

Mount filesystem with given index $idx to /mnt mountpoint.
Client will connect to all servers specified in the working set via previous command:
mount -t pohmel -o idx=$idx q /mnt

Change permissions to read-only (-I 1 option, '-I 2' - write-only, 3 - rw):
$cfg A modify -a server1.net -p 1025 -i $idx -I 1

Change IO priority to 123 (node with the highest priority gets read requests).
$cfg A modify -a server1.net -p 1025 -i $idx -P 123

One can check currect status of all connections in the mountstats file:
# cat /proc/$PID/mountstats
...
device none mounted on /mnt with fstype pohmel
idx addr(:port) socket_type protocol active priority permissions
0 server1.net:1026 1 6 1 250 1
0 server2.net:1025 1 6 1 123 3

Server installation.

Creating a server, which listens at port 1025 and 0.0.0.0 address.
Working root directory (note, that server chroots there, so you have to have appropriate permissions)
is set to /mnt, server will negotiate hash/cipher with client, in case client requested it, there
are appropriate key files.
Number of working threads is set to 10.

# ./fserver -a 0.0.0.0 -p 1025 -r /mnt -w 10 -K hash_key -k cipher_key

 -A 6			 - listen on ipv6 address. Default: Disabled.
 -r root                 - path to root directory. Default: /tmp.
 -a addr                 - listen address. Default: 0.0.0.0.
 -p port                 - listen port. Default: 1025.
 -w workers              - number of workers per connected client. Default: 1.
 -K file		 - hash key size. Default: none.
 -k file		 - cipher key size. Default: none.
 -h                      - this help.

Number of worker threads specifies how many workers will be created for each client.
Bulk single-client transafers usually are better handled with smaller number (like 1-3).
