More install-prefix work

- Handle two more hard-coded directories (NFS_V4_RECOV_ROOT and
  DEFAULT_NFS_CCACHE_DIR).
- Create ${SYSSTATEDIR}/run/ganesha, so that ganesha doesn't complain
  with obscure error messages if that directory doesn't exist
Signed-off-by: Daniel Gryniewicz <dang@linuxbox.com>
Add index the layout reply for GPFS FSAL

Signed-off-by: Marc Eshel <eshel@us.ibm.com>
Fix double free on error exit.

Signed-off-by: Marc Eshel <eshel@us.ibm.com>
Add the options to have a Ganesha server that is DS or MDS

Signed-off-by: Marc Eshel <eshel@us.ibm.com>
Name of stackable FSAL NULL updated from NULLFS to NULL

Shared library name is determined as libfsal<FSAL-name-in-lcase>.so
See pathfmt: src/FSAL/fsal_manager.c

Change-Id: Ia37d66fc6d94fa52cef7e4996704c45ea6dd53eb
Signed-off-by: Arun Olappamanna Vasudevan <aolappamanna@cs.stonybrook.edu>
Reviewed-by: Ming Chen <mchen@cs.stonybrook.edu>
Acked-by: Dominique Martinet <dominique.martinet@cea.fr>
Add utility function to load and initialize FSAL module

- Utility function: fsal_load_init()
- Call fsal_load_init() in fsal_commit()

Change-Id: I6d4cda982f3758f8d24ccc49a95eb582bb0071de
Signed-off-by: Arun Olappamanna Vasudevan <aolappamanna@cs.stonybrook.edu>
Reviewed-by: Ming Chen <mchen@cs.stonybrook.edu>
Acked-by: Dominique Martinet <dominique.martinet@cea.fr>
Support stacking multiple FSALs

* For a config file such as
EXPORT { FSAL { name = "stk1";
                FSAL { name = "stk2";
                       FSAL { name = "FS";
                            }
                     }
              }
       }
* Config parser processes EXPORT block and identifies FSAL associated with the
  export - 'stk1'. Library (libfsalstk1.so) is loaded and 'stk1' is registered
  as an FSAL.
* 'stk1_create_export' being a stackable FSAL is concerned about sub-FSAL right
  below it:
  FSAL { name = "stk1";
         FSAL { name = "stk2";
                ...
              }
       }
  After parsing the sub-FSAL name, subfsal_commit loads the sub-FSAL and gets
  it's 'create_export' function registered. 'stk2_create_export' is then called.
* 'stk2_create_export' behaves similar to 'stk1_create_export' - loads library
  'libfsalfs.so' and calls 'fs_create_export'
This enables stacking of as many stackable FSALs on top of a regular FSAL.

Change-Id: I9ed9373c63eb9d09b97d03da5ccc302f4df1819a
Signed-off-by: Arun Olappamanna Vasudevan <aolappamanna@cs.stonybrook.edu>
Reviewed-by: Ming Chen <mchen@cs.stonybrook.edu>
Acked-by: Frank S. Filz <ffilzlnx@mindspring.com>
Merge remote-tracking branch 'marc/double-free' into next

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Merge remote-tracking branch 'marc/mds-ds' into next

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Merge remote-tracking branch 'dang/install-prefix' into next

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Merge remote-tracking branch 'sbu-fsl/multistack_r3' into next

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
V2.2-dev-15

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Add delegation conflict detection for NLM.

Signed-off-by: Jeremy Bongio <jbongio@us.ibm.com>

Signed-off-by: Malahal Naineni <malahal@us.ibm.com>
[ Consolidate delegation support checks and conflict checks.

Delegation support checks are done at multiple places, sometimes
incorrectly as well! For example, the following existing check would
pass if the file is opened read-write and the file system only supported
read delegations. A read-write open requires us to grant write
delegation, and the file system must support write delegation in this
case!

	if ((arg_OPEN4->share_access & OPEN4_SHARE_ACCESS_WRITE &&
	    (!op_ctx->fsal_export->ops->fs_supports(op_ctx->fsal_export,
						    fso_delegations_w)))
	    ||
	    (arg_OPEN4->share_access & OPEN4_SHARE_ACCESS_READ &&
	     (!op_ctx->fsal_export->ops->fs_supports(op_ctx->fsal_export,
						     fso_delegations_r))))

All support checks are now done in deleg_supported function. Also added
can_we_grant_deleg() which detects all outstanding state that would
conflict if a delegation is granted!

A write delegation would conflict with any kind of existing NLM lock.
This missing check is added as well before granting write delegation. ]

Reviewed-by: Frank S. Filz <ffilzlnx@mindspring.com>
Acked-by: Venkateswararao Jujjuri (JV) <jvrao@linux.vnet.ibm.com>
Check delegation conflict prior to calling state_add_impl()

The delegation conflict detection is now done right after the share mode
conflict detection. Also renamed deleg_conflict() to state_deleg_conflict.
Just a code re-organization!

Signed-off-by: Malahal Naineni <malahal@us.ibm.com>
Reviewed-by: Frank S. Filz <ffilzlnx@mindspring.com>
Acked-by: Venkateswararao Jujjuri (JV) <jvrao@linux.vnet.ibm.com>