xref: /openbmc/linux/fs/orangefs/downcall.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2f7ab093fSMike Marshall /*
3f7ab093fSMike Marshall  * (C) 2001 Clemson University and The University of Chicago
4f7ab093fSMike Marshall  *
5f7ab093fSMike Marshall  * See COPYING in top-level directory.
6f7ab093fSMike Marshall  */
7f7ab093fSMike Marshall 
8f7ab093fSMike Marshall /*
9f7ab093fSMike Marshall  *  Definitions of downcalls used in Linux kernel module.
10f7ab093fSMike Marshall  */
11f7ab093fSMike Marshall 
12f7ab093fSMike Marshall #ifndef __DOWNCALL_H
13f7ab093fSMike Marshall #define __DOWNCALL_H
14f7ab093fSMike Marshall 
15f7ab093fSMike Marshall /*
16f7ab093fSMike Marshall  * Sanitized the device-client core interaction
17f7ab093fSMike Marshall  * for clean 32-64 bit usage
18f7ab093fSMike Marshall  */
198bb8aefdSYi Liu struct orangefs_io_response {
20f7ab093fSMike Marshall 	__s64 amt_complete;
21f7ab093fSMike Marshall };
22f7ab093fSMike Marshall 
238bb8aefdSYi Liu struct orangefs_lookup_response {
248bb8aefdSYi Liu 	struct orangefs_object_kref refn;
25f7ab093fSMike Marshall };
26f7ab093fSMike Marshall 
278bb8aefdSYi Liu struct orangefs_create_response {
288bb8aefdSYi Liu 	struct orangefs_object_kref refn;
29f7ab093fSMike Marshall };
30f7ab093fSMike Marshall 
318bb8aefdSYi Liu struct orangefs_symlink_response {
328bb8aefdSYi Liu 	struct orangefs_object_kref refn;
33f7ab093fSMike Marshall };
34f7ab093fSMike Marshall 
358bb8aefdSYi Liu struct orangefs_getattr_response {
368bb8aefdSYi Liu 	struct ORANGEFS_sys_attr_s attributes;
3747b4948fSMartin Brandenburg 	char link_target[ORANGEFS_NAME_MAX];
38f7ab093fSMike Marshall };
39f7ab093fSMike Marshall 
408bb8aefdSYi Liu struct orangefs_mkdir_response {
418bb8aefdSYi Liu 	struct orangefs_object_kref refn;
42f7ab093fSMike Marshall };
43f7ab093fSMike Marshall 
448bb8aefdSYi Liu struct orangefs_statfs_response {
45f7ab093fSMike Marshall 	__s64 block_size;
46f7ab093fSMike Marshall 	__s64 blocks_total;
47f7ab093fSMike Marshall 	__s64 blocks_avail;
48f7ab093fSMike Marshall 	__s64 files_total;
49f7ab093fSMike Marshall 	__s64 files_avail;
50f7ab093fSMike Marshall };
51f7ab093fSMike Marshall 
528bb8aefdSYi Liu struct orangefs_fs_mount_response {
53f7ab093fSMike Marshall 	__s32 fs_id;
54f7ab093fSMike Marshall 	__s32 id;
558bb8aefdSYi Liu 	struct orangefs_khandle root_khandle;
56f7ab093fSMike Marshall };
57f7ab093fSMike Marshall 
58f7ab093fSMike Marshall /* the getxattr response is the attribute value */
598bb8aefdSYi Liu struct orangefs_getxattr_response {
60f7ab093fSMike Marshall 	__s32 val_sz;
61f7ab093fSMike Marshall 	__s32 __pad1;
628bb8aefdSYi Liu 	char val[ORANGEFS_MAX_XATTR_VALUELEN];
63f7ab093fSMike Marshall };
64f7ab093fSMike Marshall 
65f7ab093fSMike Marshall /* the listxattr response is an array of attribute names */
668bb8aefdSYi Liu struct orangefs_listxattr_response {
67f7ab093fSMike Marshall 	__s32 returned_count;
68f7ab093fSMike Marshall 	__s32 __pad1;
69f7ab093fSMike Marshall 	__u64 token;
708bb8aefdSYi Liu 	char key[ORANGEFS_MAX_XATTR_LISTLEN * ORANGEFS_MAX_XATTR_NAMELEN];
71f7ab093fSMike Marshall 	__s32 keylen;
72f7ab093fSMike Marshall 	__s32 __pad2;
738bb8aefdSYi Liu 	__s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN];
74f7ab093fSMike Marshall };
75f7ab093fSMike Marshall 
768bb8aefdSYi Liu struct orangefs_param_response {
77680908e5SMartin Brandenburg 	union {
78680908e5SMartin Brandenburg 		__s64 value64;
79680908e5SMartin Brandenburg 		__s32 value32[2];
80680908e5SMartin Brandenburg 	} u;
81f7ab093fSMike Marshall };
82f7ab093fSMike Marshall 
83f7ab093fSMike Marshall #define PERF_COUNT_BUF_SIZE 4096
848bb8aefdSYi Liu struct orangefs_perf_count_response {
85f7ab093fSMike Marshall 	char buffer[PERF_COUNT_BUF_SIZE];
86f7ab093fSMike Marshall };
87f7ab093fSMike Marshall 
88f7ab093fSMike Marshall #define FS_KEY_BUF_SIZE 4096
898bb8aefdSYi Liu struct orangefs_fs_key_response {
90f7ab093fSMike Marshall 	__s32 fs_keylen;
91f7ab093fSMike Marshall 	__s32 __pad1;
92f7ab093fSMike Marshall 	char fs_key[FS_KEY_BUF_SIZE];
93f7ab093fSMike Marshall };
94f7ab093fSMike Marshall 
95482664ddSMartin Brandenburg /* 2.9.6 */
96482664ddSMartin Brandenburg struct orangefs_features_response {
97482664ddSMartin Brandenburg 	__u64 features;
98482664ddSMartin Brandenburg };
99482664ddSMartin Brandenburg 
1008bb8aefdSYi Liu struct orangefs_downcall_s {
101f7ab093fSMike Marshall 	__s32 type;
102f7ab093fSMike Marshall 	__s32 status;
103f7ab093fSMike Marshall 	/* currently trailer is used only by readdir */
104f7ab093fSMike Marshall 	__s64 trailer_size;
105f7ab093fSMike Marshall 	char *trailer_buf;
106f7ab093fSMike Marshall 
107f7ab093fSMike Marshall 	union {
1088bb8aefdSYi Liu 		struct orangefs_io_response io;
1098bb8aefdSYi Liu 		struct orangefs_lookup_response lookup;
1108bb8aefdSYi Liu 		struct orangefs_create_response create;
1118bb8aefdSYi Liu 		struct orangefs_symlink_response sym;
1128bb8aefdSYi Liu 		struct orangefs_getattr_response getattr;
1138bb8aefdSYi Liu 		struct orangefs_mkdir_response mkdir;
1148bb8aefdSYi Liu 		struct orangefs_statfs_response statfs;
1158bb8aefdSYi Liu 		struct orangefs_fs_mount_response fs_mount;
1168bb8aefdSYi Liu 		struct orangefs_getxattr_response getxattr;
1178bb8aefdSYi Liu 		struct orangefs_listxattr_response listxattr;
1188bb8aefdSYi Liu 		struct orangefs_param_response param;
1198bb8aefdSYi Liu 		struct orangefs_perf_count_response perf_count;
1208bb8aefdSYi Liu 		struct orangefs_fs_key_response fs_key;
121482664ddSMartin Brandenburg 		struct orangefs_features_response features;
122f7ab093fSMike Marshall 	} resp;
123f7ab093fSMike Marshall };
124f7ab093fSMike Marshall 
125382f4581SMartin Brandenburg /*
126382f4581SMartin Brandenburg  * The readdir response comes in the trailer.  It is followed by the
127382f4581SMartin Brandenburg  * directory entries as described in dir.c.
128382f4581SMartin Brandenburg  */
129382f4581SMartin Brandenburg 
1308bb8aefdSYi Liu struct orangefs_readdir_response_s {
131f7ab093fSMike Marshall 	__u64 token;
132f7ab093fSMike Marshall 	__u64 directory_version;
133f7ab093fSMike Marshall 	__u32 __pad2;
1348bb8aefdSYi Liu 	__u32 orangefs_dirent_outcount;
135f7ab093fSMike Marshall };
136f7ab093fSMike Marshall 
137f7ab093fSMike Marshall #endif /* __DOWNCALL_H */
138