Un-asynchronize FSAL_UP

Get rid of the FSAL upcall thread and make all functions synchronous.
This seems to work much better for the cases for which we are using
FSAL_UP, and not splitting the functions into two halves removes race
conditions.

This does mean that no FSAL_UP method may be called from an FSAL
method.  If you need to do so, then employ something like the delayed
executor or a thread fridge.  (Or pass a message to your FSAL's own
listener thread.)

To reiterate, if you call layoutrecall from your layoutget method,
really, really horrible things will happen.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Tweak initiate_recall to return false on recall error

This gives us an easier way to return the cap without risking deadlock.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Let FSAL be picky about clients in layoutrecall

Add support to recall one client's layouts or all but one client's
layouts.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Fix potential deadlock between CB_LAYOUTRECALL and LAYOUTCOMMIT

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Fix shutdown of delayed executor

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Fix error return behavior

* Don't call into FSAL's layoutreturn function if called by its layoutrecall trigger
* Pass the clientid in on revocation returns
* Only set the initial call time on the initial call (Oops.)

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>