Allow for EXPORT config of export_id = 0

This doesn't hook it up to anything yet. It just allows the existence of
a config for export_id = 0 while still using the old Pseudo FS.

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Remove BuildDefaultExport (dead code)

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Add export for export_id = 0 if wasn't configured

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Add ability to iterate export list in reverse order

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Make export iterators return false if any callback returns false

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Fix get_gsh_export_by_path and get_gsh_export_by_pseudo

These routines have to distinguish requirement for exact match and
partial match. Export config processing needs exact match to detect
duplicates, while mounting requires partial match since the mount
path might be a sub-directoru of an export.

Also fix up some bits in export parsing.

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
MORE LOOKUP

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
More LOOKUPP

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
More READDIR

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
More cache inode

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
MORE (squash) Fix get_gsh_export_by_path and get_gsh_export_by_pseudo

Also add locked versions for use when called from iterators.

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Don't lookup export in cache_inode_get_keyed

We actually have the export in the req_ctx. This eliminates the need to
acquire the export_by_id.lock lock here, which would be bad because while
constructing the Pseudo FS, we hold that lock, and could end up calling
cache_inode_get_keyed.

Put an assert in to catch us if the assumption is actually wrong.

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Add routines to mount an export in the new Pseudo FS

This is the big building block for creating a new Pseudo FS on top of
cache_inode and FSAL_PSEUDO.

pseudo_mount_export() will take a defined export, and use it's Pseudo
Path to find the export it would be mounted on, and then assure that
said export has the directory tree to support the mounted export. If a
directory is missing, it will be created.

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>
Convert to using new Pseudo FS

Signed-off-by: Frank S. Filz <ffilzlnx@mindspring.com>