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 7 /* 8 * Fscache ensures that the maximum length of cookie key is 255. The volume key 9 * is controlled by netfs, and generally no bigger than 255. 10 */ 11 #define CACHEFILES_MSG_MAX_SIZE 1024 12 13 enum cachefiles_opcode { 14 CACHEFILES_OP_OPEN, 15 }; 16 17 /* 18 * Message Header 19 * 20 * @msg_id a unique ID identifying this message 21 * @opcode message type, CACHEFILE_OP_* 22 * @len message length, including message header and following data 23 * @object_id a unique ID identifying a cache file 24 * @data message type specific payload 25 */ 26 struct cachefiles_msg { 27 __u32 msg_id; 28 __u32 opcode; 29 __u32 len; 30 __u32 object_id; 31 __u8 data[]; 32 }; 33 34 /* 35 * @data contains the volume_key followed directly by the cookie_key. volume_key 36 * is a NUL-terminated string; @volume_key_size indicates the size of the volume 37 * key in bytes. cookie_key is binary data, which is netfs specific; 38 * @cookie_key_size indicates the size of the cookie key in bytes. 39 * 40 * @fd identifies an anon_fd referring to the cache file. 41 */ 42 struct cachefiles_open { 43 __u32 volume_key_size; 44 __u32 cookie_key_size; 45 __u32 fd; 46 __u32 flags; 47 __u8 data[]; 48 }; 49 50 #endif 51