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>
pNFS/LUSTRE: invalidate attrs on close (force DS/MDS coherency)

/!\ This commit is for internal use only, it should be kept in next and never placed in a pull request

Change-Id: Icc0b221943efe85cc5f3e60dd160bd737ab0f9ed
Signed-off-by: Philippe DENIEL <philippe.deniel@cea.fr>
9P: returns EROFS when export entry is read-only.

Change-Id: I65179e57eb1b73ab7f1dda26721ad5e3f488e394
Signed-off-by: Philippe DENIEL <philippe.deniel@cea.fr>
access_check: add missing early return statements

The returns apparently went missing in bd451c42b846ebf84d427972cdb668ea7e14f360
(thanks to Frank for looking into it!)

Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
Signed-off-by: Philippe DENIEL <philippe.deniel@cea.fr>
FSAL_LUSTRE/Upcalls: this commit implements FSAL Upcalls for FSAL_LUSTRE

This commit implements the basic support of upcalls in FSAL_LUSTRE.
The mechanism is based on Lustre changelogs feature. For scalability
reason, changelog are accessed through the lcap_* API intsead of the
llapi_* (lcap provides changelog caching which leverage loads on the
Lustre MDS). Upcalls are generated by a thread, just the way GPFS does
and uses fsal_up_top function vector.
This commit needs to have lustre support for jobid in changelog records.
This means that LUSTRE 2.7 or higher is required to compile this commit.
The feature is triggered by cmake and/or rpmbuild. By default it is OFF.

Change-Id: I5f278e3f371fa0bbe2d227fd5f18bc14be0f239b
Signed-off-by: Philippe DENIEL <philippe.deniel@cea.fr>
Add address sets

An address set is a subset of IP addresses in a CIDR subnet range.
It is built on top of the libcidr library.

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Use address sets in exports and export clients WIP

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Update mnt_export to use address sets WIP

Signed-off-by: Jim Lieb <jlieb@panasas.com>
squash use address bits in export

we have to refactor the add_client to consolidate client ips where we can
subnet is done but the rest are still one offs.

Signed-off-by: Jim Lieb <jlieb@panasas.com>