POHMELFS network protocol.

Basic structure used in network communication is following command:

struct netfs_cmd
{
	__u16			cmd;	/* Command number */
	__u16			csize;	/* Attached crypto information size */
	__u16			cpad;	/* Attached padding size */
	__u16			ext;	/* External flags */
	__u32			size;	/* Size of the attached data */
	__u32			trans;	/* Transaction id */
	__u64			id;	/* Object ID to operate on. Used for feedback.*/
	__u64			start;	/* Start of the object. */
	__u64			iv;	/* IV sequence */
	__u8			data[0];
};

Commands can be embedded into transaction command (which in turn has own command),
so one can extend protocol as needed without breaking backward compatibility as long
as old commands are supported. All string lengths include tail 0 byte.

All commands are transferred over the network in big-endian. CPU endianness is used at the end peers.

@cmd - command number, which specifies command to be processed. Following
	commands are used currently:

	NETFS_READDIR	= 1,	/* Read directory for given inode number */
	NETFS_READ_PAGE,	/* Read data page from the server */
	NETFS_WRITE_PAGE,	/* Write data page to the server */
	NETFS_CREATE,		/* Create directory entry */
	NETFS_REMOVE,		/* Remove directory entry */
	NETFS_LOOKUP,		/* Lookup single object */
	NETFS_LINK,		/* Create a link */
	NETFS_TRANS,		/* Transaction */
	NETFS_OPEN,		/* Open intent */
	NETFS_INODE_INFO,	/* Metadata cache coherency synchronization message */
	NETFS_PAGE_CACHE,	/* Page cache invalidation message */
	NETFS_READ_PAGES,	/* Read multiple contiguous pages in one go */
	NETFS_RENAME,		/* Rename object */
	NETFS_CAPABILITIES,	/* Capabilities of the client, for example supported crypto */
	NETFS_LOCK,		/* Distributed lock message */
	NETFS_XATTR_SET,	/* Set extended attribute */
	NETFS_XATTR_GET,	/* Get extended attribute */

@ext - external flags. Used by different commands to specify some extra arguments
	like partial size of the embedded objects or creation flags.

@size - size of the attached data. For NETFS_READ_PAGE and NETFS_READ_PAGES no data is attached,
	but size of the requested data is incorporated here. It does not include size of the command
	header (struct netfs_cmd) itself.

@id - id of the object this command operates on. Each command can use it for own purpose.

@start - start of the object this command operates on. Each command can use it for own purpose.

@csize, @cpad - size and padding size of the (attached if needed) crypto information.

Command specifications.

@NETFS_READDIR
This command is used to sync content of the remote dir to the client.

@ext - length of the path to object.
@size - the same.
@id - local inode number of the directory to read.
@start - zero.


@NETFS_READ_PAGE
This command is used to read data from remote server.
Data size does not exceed local page cache size.

@id - inode number.
@start - first byte offset.
@size - number of bytes to read plus length of the path to object.
@ext - object path length.


@NETFS_CREATE
Used to create object.
It does not require that all directories on top of the object were
already created, it will create them automatically. Each object has
associated @netfs_path_entry data structure, which contains creation
mode (permissions and type) and length of the name as long as name itself.

@start - 0
@size - size of the all data structures needed to create a path
@id - local inode number
@ext - 0


@NETFS_REMOVE
Used to remove object.

@ext - length of the path to object.
@size - the same.
@id - local inode number.
@start - zero.


@NETFS_LOOKUP
Lookup information about object on server.

@ext - length of the path to object.
@size - the same.
@id - local inode number of the directory to look object in.
@start - local inode number of the object to look at.


@NETFS_LINK
Create hard of symlink.
Command is sent as "object_path|target_path".

@size - size of the above string.
@id - parent local inode number.
@start - 1 for symlink, 0 for hardlink.
@ext - size of the "object_path" above.


@NETFS_TRANS
Transaction header.

@size - incorporates all embedded command sizes including theirs header sizes.
@start - transaction generation number - unique id used to find transaction.
@ext - transaction flags. Unused at the moment.
@id - 0.


@NETFS_OPEN
Open intent for given transaction.

@id - local inode number.
@start - 0.
@size - path length to the object.
@ext - open flags (O_RDWR and so on).


@NETFS_INODE_INFO
Metadata update command.
It is sent to servers when attributes of the object are changed and received
when data or metadata were updated. It operates with the following structure:

struct netfs_inode_info
{
	unsigned int		mode;
	unsigned int		nlink;
	unsigned int		uid;
	unsigned int		gid;
	unsigned int		blocksize;
	unsigned int		padding;
	__u64			ino;
	__u64			blocks;
	__u64			rdev;
	__u64			size;
	__u64			version;
};

It effectively mirrors stat(2) returned data.


@ext - path length to the object.
@size - the same plus size of the netfs_inode_info structure.
@id - local inode number.
@start - 0.


@NETFS_PAGE_CACHE
Command is only received by clients. It contains information about
page to be marked as not up-to-date.

@id - client's inode number.
@start - last byte of the page to be invalidated. If it is not equal to
	current inode size, it will be vmtruncated().
@size - 0
@ext - 0


@NETFS_READ_PAGES
Used to read multiple contiguous pages in one go.

@start - first byte of the contiguous region to read.
@size - contains of two fields: lower 8 bits are used to represent page cache shift
	used by client, another 3 bytes are used to get number of pages.
@id - local inode number.
@ext - path length to the object.


@NETFS_RENAME
Used to rename object.
Attached data is formed into following string: "old_path|new_path".

@id - local inode number.
@start - parent inode number.
@size - length of the above string.
@ext - length of the old path part.


@NETFS_CAPABILITIES
Used to exchange crypto capabilities with server.
If crypto capabilities are not supported by server, then client will disable it
or fail (if 'crypto_fail_unsupported' mount options was specified).

@id - superblock index. Used to specify crypto information for group of servers.
@size - size of the attached capabilities structure.
@start - 0.
@size - 0.
@scsize - 0.

@NETFS_LOCK
Used to send lock request/release messages. Although it sends byte range request
and is capable of flushing pages based on that, it is not used, since all Linux
filesystems lock the whole inode.

@id - lock generation number.
@start - start of the locked range.
@size - size of the locked range.
@ext - lock type: read/write. Not used actually. 15'th bit is used to determine,
	if it is lock request (1) or release (0).

@NETFS_XATTR_SET
@NETFS_XATTR_GET
Used to set/get extended attributes for given inode.
@id - attribute generation number or xattr setting type
@start - size of the attribute (request or attached)
@size - name length, path len and data size for given attribute
@ext - path length for given object
