ANDROID: uapi: Add dm-user structure definition
dm-user is a device mapper target that allows a userspace process to handle each incoming BIO. Communication with userspace consists of a stream of messages proxied over a misc device, the structure of each message is defined in this header. Test: none Bug: 161496058 Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com> Change-Id: I97ca538fbd7e73e467416590190d85894db42e7d
This commit is contained in:
parent
1caf05ce90
commit
1817b1966d
68
include/uapi/linux/dm-user.h
Normal file
68
include/uapi/linux/dm-user.h
Normal file
@ -0,0 +1,68 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2020 Google, Inc
|
||||
* Copyright (C) 2020 Palmer Dabbelt <palmerdabbelt@google.com>
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_DM_USER_H
|
||||
#define _LINUX_DM_USER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* dm-user proxies device mapper ops between the kernel and userspace. It's
|
||||
* essentially just an RPC mechanism: all kernel calls create a request,
|
||||
* userspace handles that with a response. Userspace obtains requests via
|
||||
* read() and provides responses via write().
|
||||
*
|
||||
* See Documentation/block/dm-user.rst for more information.
|
||||
*/
|
||||
|
||||
#define DM_USER_REQ_MAP_READ 0
|
||||
#define DM_USER_REQ_MAP_WRITE 1
|
||||
#define DM_USER_REQ_MAP_FLUSH 2
|
||||
#define DM_USER_REQ_MAP_DISCARD 3
|
||||
#define DM_USER_REQ_MAP_SECURE_ERASE 4
|
||||
#define DM_USER_REQ_MAP_WRITE_SAME 5
|
||||
#define DM_USER_REQ_MAP_WRITE_ZEROES 6
|
||||
#define DM_USER_REQ_MAP_ZONE_OPEN 7
|
||||
#define DM_USER_REQ_MAP_ZONE_CLOSE 8
|
||||
#define DM_USER_REQ_MAP_ZONE_FINISH 9
|
||||
#define DM_USER_REQ_MAP_ZONE_APPEND 10
|
||||
#define DM_USER_REQ_MAP_ZONE_RESET 11
|
||||
#define DM_USER_REQ_MAP_ZONE_RESET_ALL 12
|
||||
|
||||
#define DM_USER_REQ_MAP_FLAG_FAILFAST_DEV 0x00001
|
||||
#define DM_USER_REQ_MAP_FLAG_FAILFAST_TRANSPORT 0x00002
|
||||
#define DM_USER_REQ_MAP_FLAG_FAILFAST_DRIVER 0x00004
|
||||
#define DM_USER_REQ_MAP_FLAG_SYNC 0x00008
|
||||
#define DM_USER_REQ_MAP_FLAG_META 0x00010
|
||||
#define DM_USER_REQ_MAP_FLAG_PRIO 0x00020
|
||||
#define DM_USER_REQ_MAP_FLAG_NOMERGE 0x00040
|
||||
#define DM_USER_REQ_MAP_FLAG_IDLE 0x00080
|
||||
#define DM_USER_REQ_MAP_FLAG_INTEGRITY 0x00100
|
||||
#define DM_USER_REQ_MAP_FLAG_FUA 0x00200
|
||||
#define DM_USER_REQ_MAP_FLAG_PREFLUSH 0x00400
|
||||
#define DM_USER_REQ_MAP_FLAG_RAHEAD 0x00800
|
||||
#define DM_USER_REQ_MAP_FLAG_BACKGROUND 0x01000
|
||||
#define DM_USER_REQ_MAP_FLAG_NOWAIT 0x02000
|
||||
#define DM_USER_REQ_MAP_FLAG_CGROUP_PUNT 0x04000
|
||||
#define DM_USER_REQ_MAP_FLAG_NOUNMAP 0x08000
|
||||
#define DM_USER_REQ_MAP_FLAG_HIPRI 0x10000
|
||||
#define DM_USER_REQ_MAP_FLAG_DRV 0x20000
|
||||
#define DM_USER_REQ_MAP_FLAG_SWAP 0x40000
|
||||
|
||||
#define DM_USER_RESP_SUCCESS 0
|
||||
#define DM_USER_RESP_ERROR 1
|
||||
#define DM_USER_RESP_UNSUPPORTED 2
|
||||
|
||||
struct dm_user_message {
|
||||
__u64 seq;
|
||||
__u64 type;
|
||||
__u64 flags;
|
||||
__u64 sector;
|
||||
__u64 len;
|
||||
__u8 buf[];
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user