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