mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-28 18:10:32 +00:00

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>
48 lines
931 B
C
48 lines
931 B
C
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
/*
|
|
* Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved.
|
|
*
|
|
* This copyrighted material is made available to anyone wishing to use,
|
|
* modify, copy, or redistribute it subject to the terms and conditions
|
|
* of the GNU General Public License v.2.
|
|
*/
|
|
|
|
#ifndef _UAPI__DLM_PLOCK_DOT_H__
|
|
#define _UAPI__DLM_PLOCK_DOT_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
#define DLM_PLOCK_MISC_NAME "dlm_plock"
|
|
|
|
#define DLM_PLOCK_VERSION_MAJOR 1
|
|
#define DLM_PLOCK_VERSION_MINOR 2
|
|
#define DLM_PLOCK_VERSION_PATCH 0
|
|
|
|
enum {
|
|
DLM_PLOCK_OP_LOCK = 1,
|
|
DLM_PLOCK_OP_UNLOCK,
|
|
DLM_PLOCK_OP_GET,
|
|
DLM_PLOCK_OP_CANCEL,
|
|
};
|
|
|
|
#define DLM_PLOCK_FL_CLOSE 1
|
|
|
|
struct dlm_plock_info {
|
|
__u32 version[3];
|
|
__u8 optype;
|
|
__u8 ex;
|
|
__u8 wait;
|
|
__u8 flags;
|
|
__u32 pid;
|
|
__s32 nodeid;
|
|
__s32 rv;
|
|
__u32 fsid;
|
|
__u64 number;
|
|
__u64 start;
|
|
__u64 end;
|
|
__u64 owner;
|
|
};
|
|
|
|
|
|
#endif /* _UAPI__DLM_PLOCK_DOT_H__ */
|