Clean up EXCHANGE_ID and get rid of macros

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Get rid of static buffer in client_record_t

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Don't compare client address in EXCHANGE_ID

This interferes with both trunking and reconnection after a change in
address.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Check state as well as lease expiry on co_owner collision

This improves conformance with RFC 5661 and closes a @todo item.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Change the return type of valid_lease to bool

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Set EXCHGID4_FLAG_CONFIRMED_R on confirmed ID

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>
Add pNFS flags to owner and use a better hash

RFC 5661 says that servers are allowed (but not required) to treat
identical co_owner values sent with different pNFS flags in
EXCHANGE_ID as describing different owners.  The Linux client,
however, responds to being given a known clientid when connecting to a
DS that is colocated on an MDS by calling DESTROY_CLIENTID and
re-exchanging.

This is a particularly aggressive way not to support trunking.

Also switch to using CityHash for co_owner values rather than a
moddy-loopy-sum over all the bytes.

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