fs: dlm: allow to F_SETLKW getting interrupted
authorAlexander Aring <aahringo@redhat.com>
Thu, 20 Jul 2023 12:22:40 +0000 (08:22 -0400)
committerDavid Teigland <teigland@redhat.com>
Thu, 20 Jul 2023 22:24:57 +0000 (17:24 -0500)
commit568f915655b3b4c40032104e4d0014e5e2c474b9
tree6888d69f78c3717317f3242ddd6ba60753746941
parent99c58d6480d937dbdc2b4acfdea1bcf7ab113e5e
fs: dlm: allow to F_SETLKW getting interrupted

This patch implements dlm plock F_SETLKW interruption feature. If a
blocking posix lock request got interrupted in user space by a signal a
cancellation request for a non granted lock request to the user space
lock manager will be send. The user lock manager answers either with
zero or a negative errno code. A errno of -ENOENT signals that there is
currently no blocking lock request waiting to being granted. In case of
-ENOENT it was probably to late to request a cancellation and the
pending lock got granted. In any error case we will wait until the lock
is being granted as cancellation failed, this causes also that in case
of an older user lock manager returning -EINVAL we will wait as
cancellation is not supported which should be fine. If a user requires
this feature the user should update dlm user space to support lock
request cancellation.

Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/plock.c
include/uapi/linux/dlm_plock.h