GNU Linux-libre 6.9.2-gnu
[releases.git] / include / uapi / linux / cachefiles.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _LINUX_CACHEFILES_H
3 #define _LINUX_CACHEFILES_H
4
5 #include <linux/types.h>
6 #include <linux/ioctl.h>
7
8 /*
9  * Fscache ensures that the maximum length of cookie key is 255. The volume key
10  * is controlled by netfs, and generally no bigger than 255.
11  */
12 #define CACHEFILES_MSG_MAX_SIZE 1024
13
14 enum cachefiles_opcode {
15         CACHEFILES_OP_OPEN,
16         CACHEFILES_OP_CLOSE,
17         CACHEFILES_OP_READ,
18 };
19
20 /*
21  * Message Header
22  *
23  * @msg_id      a unique ID identifying this message
24  * @opcode      message type, CACHEFILE_OP_*
25  * @len         message length, including message header and following data
26  * @object_id   a unique ID identifying a cache file
27  * @data        message type specific payload
28  */
29 struct cachefiles_msg {
30         __u32 msg_id;
31         __u32 opcode;
32         __u32 len;
33         __u32 object_id;
34         __u8  data[];
35 };
36
37 /*
38  * @data contains the volume_key followed directly by the cookie_key. volume_key
39  * is a NUL-terminated string; @volume_key_size indicates the size of the volume
40  * key in bytes. cookie_key is binary data, which is netfs specific;
41  * @cookie_key_size indicates the size of the cookie key in bytes.
42  *
43  * @fd identifies an anon_fd referring to the cache file.
44  */
45 struct cachefiles_open {
46         __u32 volume_key_size;
47         __u32 cookie_key_size;
48         __u32 fd;
49         __u32 flags;
50         __u8  data[];
51 };
52
53 /*
54  * @off         indicates the starting offset of the requested file range
55  * @len         indicates the length of the requested file range
56  */
57 struct cachefiles_read {
58         __u64 off;
59         __u64 len;
60 };
61
62 /*
63  * Reply for READ request
64  * @arg for this ioctl is the @id field of READ request.
65  */
66 #define CACHEFILES_IOC_READ_COMPLETE    _IOW(0x98, 1, int)
67
68 #endif