The following patchset implements an extension to nfsd providing a complete minimal pnfs server exporting DLM-based clustered file systems such as GFS2 or OCFS2. The pNFS operations that are implemented are GETDEVICELIST and GETDEVICEINFO, LAYOUTGET and LAYOUTRETURN. The server does the bookkeeping of the outstanding layout state in response to layout get and return. Also, the implementation cleans up the client layout state opon client expiry and on CLOSE when the return_on_close flag is set on the LAYOUTGET response. The latter is the default behavior until layout recalls are implemented with which the server can reclaim its resources in case the client holds layout state post closing files. The patchset is based on v3.12-rc2 and it's available also online here: git://linux-nfs.org/~bhalevy/linux-pnfs.git pnfsd-dlm-3.12-rc2-2013-09-26 Benny General infrastructure: [PATCH RFC v0 01/49] pnfsd: Define CONFIG_PNFSD [PATCH RFC v0 02/49] pnfsd: define NFSDDBG_PNFS [PATCH RFC v0 03/49] pnfsd: return pnfs flags on exchange_id [PATCH RFC v0 04/49] pnfsd: don't set up back channel on create_session for ds [PATCH RFC v0 05/49] pnfsd: introduce pnfsd header files [PATCH RFC v0 06/49] pnfsd: define pnfs_export_operations [PATCH RFC v0 07/49] pnfsd: add pnfs export option [PATCH RFC v0 08/49] pnfsd: layout verify [PATCH RFC v0 09/49] pnfsd: initial stub Device ops: [PATCH RFC v0 10/49] pnfsd: use sbid hash table to map super_blocks to devid major identifiers [PATCH RFC v0 11/49] NFSD: introduce exp_xdr.h [PATCH RFC v0 12/49] pnfsd: get device list/info [PATCH RFC v0 13/49] pnfsd: filelayout: get device list/info [PATCH RFC v0 14/49] pnfsd: provide helper for xdr encoding of deviceid [PATCH RFC v0 15/49] pnfsd: add helper functions for identifying DS filehandles [PATCH RFC v0 16/49] pnfsd: accept all ds stateids layout get: [PATCH RFC v0 17/49] DEBUG: nfsd: more client_lock asserts [PATCH RFC v0 18/49] pnfsd: nfs4_assert_state_locked [PATCH RFC v0 19/49] pnfsd: layout get [PATCH RFC v0 20/49] pnfsd: filelayout: layout encoding layout state handling for layout get: [PATCH RFC v0 21/49] nfsd: no need to unhash_stid before free [PATCH RFC v0 22/49] nfsd: cleanup free_stid [PATCH RFC v0 23/49] pnfsd: layout state allocation [PATCH RFC v0 24/49] pnfsd: process the layout stateid [PATCH RFC v0 25/49] pnfsd: layout state per client tracking [PATCH RFC v0 26/49] pnfsd: layout state per file tracking [PATCH RFC v0 27/49] pnfsd: hash layouts on layout state [PATCH RFC v0 28/49] pnfsd: support layout segment merging pnfs attributes: [PATCH RFC v0 29/49] pnfsd: support layout_type attribute [PATCH RFC v0 30/49] pnfsd: make pnfs server return layout_blksize when the client asks for it [PATCH RFC v0 31/49] pnfsd: add support for per-file layout_types attribute pnfsd over dlm: [PATCH RFC v0 32/49] pnfsd: per block device dlm data server list cache [PATCH RFC v0 33/49] pnfsd: Add IP address validation to nfsd4_set_pnfs_dlm_device() [PATCH RFC v0 34/49] pnfsd: new nfsd filesystem file: pnfs_dlm_device [PATCH RFC v0 35/49] pnfsd: nfsd4_pnfs_dlm_getdeviter [PATCH RFC v0 36/49] pnfsd: nfsd4_pnfs_dlm_getdevinfo [PATCH RFC v0 37/49] pnfsd: make /proc/fs/nfsd/pnfs_dlm_device report dlm device list. [PATCH RFC v0 38/49] pnfsd: nfsd4_pnfs_dlm_layoutget [PATCH RFC v0 39/49] pnfsd: DLM file layout only support read iomode layouts [PATCH RFC v0 40/49] pnfsd: add dlm file layout layout-type [PATCH RFC v0 41/49] pnfsd: dlm pnfs_export_operations [PATCH RFC v0 42/49] pnfsd: gfs2: use generic file layout pnfs operations vector layout return / expire / return_on_close: [PATCH RFC v0 43/49] pnfsd: release state lock around iput in put_nfs4_file [PATCH RFC v0 44/49] posix_acl: resolve compile dependency in posix_acl.h [PATCH RFC v0 45/49] nfs: resolve compile dependency in nfs_xdr.h [PATCH RFC v0 46/49] pnfsd: layout return generic implementation [PATCH RFC v0 47/49] pnfsd: pnfs_expire_client [PATCH RFC v0 48/49] pnfsd: return on close [PATCH RFC v0 49/49] pnfsd: dlm set return_on_close to true -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html