client: allow aborting MDS request

Signed-off-by: Yan, Zheng <zyan@redhat.com>
client: allow interrupting blocked file lock operation

Register interrupt callback for file lock operations that may block.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
client: use atomic variable to track reference of MetaRequeset

this allow us to increase reference count of MetaRequest while not holding
the client_lock

Signed-off-by: Yan, Zheng <zyan@redhat.com>
client: use finisher to abort MDS request

When a request is interrupted, libfuse first locks an internal mutex,
then calls the interrupt callback. libfuse need to lock the same mutex.
when unregistering interrupt callback, We unregister interrupt callback
while client_lock is locked, so we can't acquiring the client_lock in
the interrupt callback.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
mds: wake up interrupted file setlockrule requests

current client does not re-send interrupted requests, so it's OK
to remove this hack

Signed-off-by: Yan, Zheng <zyan@redhat.com>