From cbe5b883cfdd88020a789cc7e10da0f27eb00b89 Mon Sep 17 00:00:00 2001 From: Xavi Hernandez Date: Sat, 26 Jul 2025 18:01:29 +0200 Subject: [PATCH] libcephfs_proxy: rewrite protocol structures definition This is just a reorganization of the definitions of the structures used for proxy communications. There's no change in their contents. Signed-off-by: Xavi Hernandez (cherry picked from commit 0aa69fffd13c84f47b965a8ef4a297981bc8405b) --- src/libcephfs_proxy/proxy_requests.h | 561 +++++++++++++++++++++------ 1 file changed, 445 insertions(+), 116 deletions(-) diff --git a/src/libcephfs_proxy/proxy_requests.h b/src/libcephfs_proxy/proxy_requests.h index c18a9f7823e3a..6815e5a27e7fe 100644 --- a/src/libcephfs_proxy/proxy_requests.h +++ b/src/libcephfs_proxy/proxy_requests.h @@ -161,161 +161,486 @@ enum { /* Declaration of types used to transder requests and answers. */ -CEPH_TYPE(ceph_version, REQ(), - ANS(int32_t major; int32_t minor; int32_t patch; int16_t text;)); - -CEPH_TYPE(ceph_userperm_new, REQ(uint32_t uid; uint32_t gid; uint32_t groups;), - ANS(uint64_t userperm;)); - -CEPH_TYPE(ceph_userperm_destroy, REQ(uint64_t userperm;), ANS()); - -CEPH_TYPE(ceph_create, REQ(int16_t id;), ANS_CMOUNT()); - -CEPH_TYPE(ceph_release, REQ_CMOUNT(), ANS()); - -CEPH_TYPE(ceph_conf_read_file, REQ_CMOUNT(uint16_t path;), ANS()); - -CEPH_TYPE(ceph_conf_get, REQ_CMOUNT(uint32_t size; uint16_t option;), - ANS(uint16_t value;)); - -CEPH_TYPE(ceph_conf_set, REQ_CMOUNT(uint16_t option; uint16_t value;), ANS()); - -CEPH_TYPE(ceph_init, REQ_CMOUNT(), ANS()); - -CEPH_TYPE(ceph_select_filesystem, REQ_CMOUNT(uint16_t fs;), ANS()); - -CEPH_TYPE(ceph_mount, REQ_CMOUNT(uint16_t root;), ANS()); - -CEPH_TYPE(ceph_unmount, REQ_CMOUNT(), ANS()); - -CEPH_TYPE(ceph_ll_statfs, REQ_CMOUNT(uint64_t inode;), ANS()); +CEPH_TYPE(ceph_version, + REQ( + ), + ANS( + int32_t major; + int32_t minor; + int32_t patch; + int16_t text; + ) +); + +CEPH_TYPE(ceph_userperm_new, + REQ( + uint32_t uid; + uint32_t gid; + uint32_t groups; + ), + ANS( + uint64_t userperm; + ) +); + +CEPH_TYPE(ceph_userperm_destroy, + REQ( + uint64_t userperm; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_create, + REQ( + int16_t id; + ), + ANS_CMOUNT( + ) +); + +CEPH_TYPE(ceph_release, + REQ_CMOUNT( + ), + ANS( + ) +); + +CEPH_TYPE(ceph_conf_read_file, + REQ_CMOUNT( + uint16_t path; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_conf_get, + REQ_CMOUNT( + uint32_t size; + uint16_t option; + ), + ANS( + uint16_t value; + ) +); + +CEPH_TYPE(ceph_conf_set, + REQ_CMOUNT( + uint16_t option; + uint16_t value; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_init, + REQ_CMOUNT( + ), + ANS( + ) +); + +CEPH_TYPE(ceph_select_filesystem, + REQ_CMOUNT( + uint16_t fs; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_mount, + REQ_CMOUNT( + uint16_t root; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_unmount, + REQ_CMOUNT( + ), + ANS( + ) +); + +CEPH_TYPE(ceph_ll_statfs, + REQ_CMOUNT( + uint64_t inode; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_lookup, - REQ_CMOUNT(uint64_t userperm; uint64_t parent; uint32_t want; - uint32_t flags; uint16_t name;), - ANS(uint64_t inode;)); - -CEPH_TYPE(ceph_ll_lookup_inode, REQ_CMOUNT(struct inodeno_t ino;), - ANS(uint64_t inode;)); - -CEPH_TYPE(ceph_ll_lookup_root, REQ_CMOUNT(), ANS(uint64_t inode;)); - -CEPH_TYPE(ceph_ll_put, REQ_CMOUNT(uint64_t inode;), ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t parent; + uint32_t want; + uint32_t flags; + uint16_t name; + ), + ANS( + uint64_t inode; + ) +); + +CEPH_TYPE(ceph_ll_lookup_inode, + REQ_CMOUNT( + struct inodeno_t ino; + ), + ANS( + uint64_t inode; + ) +); + +CEPH_TYPE(ceph_ll_lookup_root, + REQ_CMOUNT( + ), + ANS( + uint64_t inode; + ) +); + +CEPH_TYPE(ceph_ll_put, + REQ_CMOUNT( + uint64_t inode; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_walk, - REQ_CMOUNT(uint64_t userperm; uint32_t want; uint32_t flags; - uint16_t path;), - ANS(uint64_t inode;)); - -CEPH_TYPE(ceph_chdir, REQ_CMOUNT(uint16_t path;), ANS()); - -CEPH_TYPE(ceph_getcwd, REQ_CMOUNT(), ANS(uint16_t path;)); - -CEPH_TYPE(ceph_readdir, REQ_CMOUNT(uint64_t dir;), ANS(bool eod;)); - -CEPH_TYPE(ceph_rewinddir, REQ_CMOUNT(uint64_t dir;), ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint32_t want; + uint32_t flags; + uint16_t path; + ), + ANS( + uint64_t inode; + ) +); + +CEPH_TYPE(ceph_chdir, + REQ_CMOUNT( + uint16_t path; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_getcwd, + REQ_CMOUNT( + ), + ANS( + uint16_t path; + ) +); + +CEPH_TYPE(ceph_readdir, + REQ_CMOUNT( + uint64_t dir; + ), + ANS( + bool eod; + ) +); + +CEPH_TYPE(ceph_rewinddir, + REQ_CMOUNT( + uint64_t dir; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_open, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; int32_t flags;), - ANS(uint64_t fh;)); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + int32_t flags; + ), + ANS( + uint64_t fh; + ) +); CEPH_TYPE(ceph_ll_create, - REQ_CMOUNT(uint64_t userperm; uint64_t parent; mode_t mode; - int32_t oflags; uint32_t want; uint32_t flags; - uint16_t name;), - ANS(uint64_t inode; uint64_t fh;)); + REQ_CMOUNT( + uint64_t userperm; + uint64_t parent; + mode_t mode; + int32_t oflags; + uint32_t want; + uint32_t flags; + uint16_t name; + ), + ANS( + uint64_t inode; + uint64_t fh; + ) +); CEPH_TYPE(ceph_ll_mknod, - REQ_CMOUNT(uint64_t userperm; uint64_t parent; mode_t mode; - dev_t rdev; uint32_t want; uint32_t flags; uint16_t name;), - ANS(uint64_t inode;)); - -CEPH_TYPE(ceph_ll_close, REQ_CMOUNT(uint64_t fh;), ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t parent; + mode_t mode; + dev_t rdev; + uint32_t want; + uint32_t flags; + uint16_t name; + ), + ANS( + uint64_t inode; + ) +); + +CEPH_TYPE(ceph_ll_close, + REQ_CMOUNT( + uint64_t fh; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_rename, - REQ_CMOUNT(uint64_t userperm; uint64_t old_parent; - uint64_t new_parent; uint16_t old_name; - uint16_t new_name;), - ANS()); - -CEPH_TYPE(ceph_ll_lseek, REQ_CMOUNT(uint64_t fh; off_t offset; int32_t whence;), - ANS(off_t offset;)); - -CEPH_TYPE(ceph_ll_read, REQ_CMOUNT(uint64_t fh; int64_t offset; uint64_t len;), - ANS()); - -CEPH_TYPE(ceph_ll_write, REQ_CMOUNT(uint64_t fh; int64_t offset; uint64_t len;), - ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t old_parent; + uint64_t new_parent; + uint16_t old_name; + uint16_t new_name; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_ll_lseek, + REQ_CMOUNT( + uint64_t fh; + off_t offset; + int32_t whence; + ), + ANS( + off_t offset; + ) +); + +CEPH_TYPE(ceph_ll_read, + REQ_CMOUNT( + uint64_t fh; + int64_t offset; + uint64_t len; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_ll_write, + REQ_CMOUNT( + uint64_t fh; + int64_t offset; + uint64_t len; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_link, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; uint64_t parent; - uint16_t name;), - ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + uint64_t parent; + uint16_t name; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_unlink, - REQ_CMOUNT(uint64_t userperm; uint64_t parent; uint16_t name;), - ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t parent; + uint16_t name; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_getattr, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; uint32_t want; - uint32_t flags;), - ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + uint32_t want; + uint32_t flags; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_setattr, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; int32_t mask;), ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + int32_t mask; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_fallocate, - REQ_CMOUNT(uint64_t fh; int64_t offset; int64_t length; - int32_t mode;), - ANS()); - -CEPH_TYPE(ceph_ll_fsync, REQ_CMOUNT(uint64_t fh; int32_t dataonly;), ANS()); + REQ_CMOUNT( + uint64_t fh; + int64_t offset; + int64_t length; + int32_t mode; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_ll_fsync, + REQ_CMOUNT( + uint64_t fh; + int32_t dataonly; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_listxattr, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; size_t size;), - ANS(size_t size;)); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + size_t size; + ), + ANS( + size_t size; + ) +); CEPH_TYPE(ceph_ll_getxattr, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; size_t size; - uint16_t name;), - ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + size_t size; + uint16_t name; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_setxattr, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; size_t size; - int32_t flags; uint16_t name;), - ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + size_t size; + int32_t flags; + uint16_t name; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_removexattr, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; uint16_t name;), ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + uint16_t name; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_readlink, - REQ_CMOUNT(uint64_t userperm; uint64_t inode; size_t size;), ANS()); + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + size_t size; + ), + ANS( + ) +); CEPH_TYPE(ceph_ll_symlink, - REQ_CMOUNT(uint64_t userperm; uint64_t parent; uint32_t want; - uint32_t flags; uint16_t name; uint16_t target;), - ANS(uint64_t inode;)); - -CEPH_TYPE(ceph_ll_opendir, REQ_CMOUNT(uint64_t userperm; uint64_t inode;), - ANS(uint64_t dir;)); + REQ_CMOUNT( + uint64_t userperm; + uint64_t parent; + uint32_t want; + uint32_t flags; + uint16_t name; + uint16_t target; + ), + ANS( + uint64_t inode; + ) +); + +CEPH_TYPE(ceph_ll_opendir, + REQ_CMOUNT( + uint64_t userperm; + uint64_t inode; + ), + ANS( + uint64_t dir; + ) +); CEPH_TYPE(ceph_ll_mkdir, - REQ_CMOUNT(uint64_t userperm; uint64_t parent; mode_t mode; - uint32_t want; uint32_t flags; uint16_t name;), - ANS(uint64_t inode;)); + REQ_CMOUNT( + uint64_t userperm; + uint64_t parent; + mode_t mode; + uint32_t want; + uint32_t flags; + uint16_t name; + ), + ANS( + uint64_t inode; + ) +); CEPH_TYPE(ceph_ll_rmdir, - REQ_CMOUNT(uint64_t userperm; uint64_t parent; uint16_t name;), - ANS()); - -CEPH_TYPE(ceph_ll_releasedir, REQ_CMOUNT(uint64_t dir;), ANS()); - -CEPH_TYPE(ceph_mount_perms, REQ_CMOUNT(), ANS(uint64_t userperm;)); + REQ_CMOUNT( + uint64_t userperm; + uint64_t parent; + uint16_t name; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_ll_releasedir, + REQ_CMOUNT( + uint64_t dir; + ), + ANS( + ) +); + +CEPH_TYPE(ceph_mount_perms, + REQ_CMOUNT( + ), + ANS( + uint64_t userperm; + ) +); CEPH_TYPE(ceph_ll_nonblocking_readv_writev, - REQ_CMOUNT(uint64_t info; uint64_t fh; int64_t off; uint64_t size; - bool write; bool fsync; bool syncdataonly;), - ANS(int64_t res;)); + REQ_CMOUNT( + uint64_t info; + uint64_t fh; + int64_t off; + uint64_t size; + bool write; + bool fsync; + bool syncdataonly; + ), + ANS( + int64_t res; + ) +); typedef union _proxy_req { proxy_link_req_t header; @@ -371,7 +696,11 @@ typedef union _proxy_req { } proxy_req_t; CEPH_TYPE_CBK(ceph_ll_nonblocking_readv_writev, - CBK(uint64_t info; int64_t res;)); + CBK( + uint64_t info; + int64_t res; + ) +); typedef union _proxy_cbk { proxy_link_req_t header; -- 2.39.5