Architecture - External File Locking

Definitions

 * POSIX file lock, lockf lock, fcntl lock : file range lock obtained through one of file range locking interfaces prescribed by POSIX and based on SysV lockf and fcntl interfaces.
 * flock lock : whole-file lock obtained through BSD flock interface.
 * group lock : whole-file lock obtained through Lustre-specific LL_IOC_GROUP_LOCK ioctl.
 * file lock : either of above locks.

recovery
TBD.

Implementation constraints
Use DLM to implement flock.

Questions and Issues

 * any special handling for liblustre?
 * do we want file locks to be kept on LRU list by clients?