1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2#ifndef _UAPI_PR_H 3#define _UAPI_PR_H 4 5#include <linux/types.h> 6 7enum pr_status { 8 PR_STS_SUCCESS = 0x0, 9 /* 10 * The following error codes are based on SCSI, because the interface 11 * was originally created for it and has existing users. 12 */ 13 /* Generic device failure. */ 14 PR_STS_IOERR = 0x2, 15 PR_STS_RESERVATION_CONFLICT = 0x18, 16 /* Temporary path failure that can be retried. */ 17 PR_STS_RETRY_PATH_FAILURE = 0xe0000, 18 /* The request was failed due to a fast failure timer. */ 19 PR_STS_PATH_FAST_FAILED = 0xf0000, 20 /* The path cannot be reached and has been marked as failed. */ 21 PR_STS_PATH_FAILED = 0x10000, 22}; 23 24enum pr_type { 25 PR_WRITE_EXCLUSIVE = 1, 26 PR_EXCLUSIVE_ACCESS = 2, 27 PR_WRITE_EXCLUSIVE_REG_ONLY = 3, 28 PR_EXCLUSIVE_ACCESS_REG_ONLY = 4, 29 PR_WRITE_EXCLUSIVE_ALL_REGS = 5, 30 PR_EXCLUSIVE_ACCESS_ALL_REGS = 6, 31}; 32 33struct pr_reservation { 34 __u64 key; 35 __u32 type; 36 __u32 flags; 37}; 38 39struct pr_registration { 40 __u64 old_key; 41 __u64 new_key; 42 __u32 flags; 43 __u32 __pad; 44}; 45 46struct pr_preempt { 47 __u64 old_key; 48 __u64 new_key; 49 __u32 type; 50 __u32 flags; 51}; 52 53struct pr_clear { 54 __u64 key; 55 __u32 flags; 56 __u32 __pad; 57}; 58 59#define PR_FL_IGNORE_KEY (1 << 0) /* ignore existing key */ 60 61#define IOC_PR_REGISTER _IOW('p', 200, struct pr_registration) 62#define IOC_PR_RESERVE _IOW('p', 201, struct pr_reservation) 63#define IOC_PR_RELEASE _IOW('p', 202, struct pr_reservation) 64#define IOC_PR_PREEMPT _IOW('p', 203, struct pr_preempt) 65#define IOC_PR_PREEMPT_ABORT _IOW('p', 204, struct pr_preempt) 66#define IOC_PR_CLEAR _IOW('p', 205, struct pr_clear) 67 68#endif /* _UAPI_PR_H */ 69