diff options
author | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2017-01-21 15:08:50 +0530 |
---|---|---|
committer | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2017-01-30 19:31:50 +0530 |
commit | 7857ef74633919b8213009b411b0840eee144c97 (patch) | |
tree | 6d9fcf88b321b8b1011cd9d4053f20e004b7151c /rpc | |
parent | 683b6ba3f17a9bbf876c66f5d4b7a9d573d8853f (diff) |
gluster-block: add delete rpc
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Diffstat (limited to 'rpc')
-rw-r--r-- | rpc/block.h | 62 | ||||
-rw-r--r-- | rpc/block.x | 26 | ||||
-rw-r--r-- | rpc/block_clnt.c | 75 | ||||
-rw-r--r-- | rpc/block_svc.c | 35 | ||||
-rw-r--r-- | rpc/block_xdr.c | 46 |
5 files changed, 243 insertions, 1 deletions
diff --git a/rpc/block.h b/rpc/block.h index d939057..0ce4e33 100644 --- a/rpc/block.h +++ b/rpc/block.h @@ -33,6 +33,30 @@ struct blockCreateCli { }; typedef struct blockCreateCli blockCreateCli; +struct blockDeleteCli { + char block_name[255]; + char *block_hosts; +}; +typedef struct blockDeleteCli blockDeleteCli; + +struct blockDelete { + char block_name[255]; + char gbid[127]; +}; +typedef struct blockDelete blockDelete; + +struct blockInfoCli { + char block_name[255]; + char volume[255]; +}; +typedef struct blockInfoCli blockInfoCli; + +struct blockListCli { + char volume[255]; + u_quad_t offset; +}; +typedef struct blockListCli blockListCli; + struct blockResponse { int exit; char *out; @@ -51,12 +75,30 @@ typedef struct blockResponse blockResponse; #define BLOCK_CREATE_CLI 1 extern blockResponse * block_create_cli_1(blockCreateCli *, CLIENT *); extern blockResponse * block_create_cli_1_svc(blockCreateCli *, struct svc_req *); +#define BLOCK_LIST_CLI 2 +extern blockResponse * block_list_cli_1(blockListCli *, CLIENT *); +extern blockResponse * block_list_cli_1_svc(blockListCli *, struct svc_req *); +#define BLOCK_INFO_CLI 3 +extern blockResponse * block_info_cli_1(blockInfoCli *, CLIENT *); +extern blockResponse * block_info_cli_1_svc(blockInfoCli *, struct svc_req *); +#define BLOCK_DELETE_CLI 4 +extern blockResponse * block_delete_cli_1(blockDeleteCli *, CLIENT *); +extern blockResponse * block_delete_cli_1_svc(blockDeleteCli *, struct svc_req *); extern int gluster_block_cli_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); #else /* K&R C */ #define BLOCK_CREATE_CLI 1 extern blockResponse * block_create_cli_1(); extern blockResponse * block_create_cli_1_svc(); +#define BLOCK_LIST_CLI 2 +extern blockResponse * block_list_cli_1(); +extern blockResponse * block_list_cli_1_svc(); +#define BLOCK_INFO_CLI 3 +extern blockResponse * block_info_cli_1(); +extern blockResponse * block_info_cli_1_svc(); +#define BLOCK_DELETE_CLI 4 +extern blockResponse * block_delete_cli_1(); +extern blockResponse * block_delete_cli_1_svc(); extern int gluster_block_cli_1_freeresult (); #endif /* K&R C */ @@ -67,12 +109,24 @@ extern int gluster_block_cli_1_freeresult (); #define BLOCK_CREATE 1 extern blockResponse * block_create_1(blockCreate *, CLIENT *); extern blockResponse * block_create_1_svc(blockCreate *, struct svc_req *); +#define BLOCK_DELETE 2 +extern blockResponse * block_delete_1(blockDelete *, CLIENT *); +extern blockResponse * block_delete_1_svc(blockDelete *, struct svc_req *); +#define BLOCK_EXEC 3 +extern blockResponse * block_exec_1(char **, CLIENT *); +extern blockResponse * block_exec_1_svc(char **, struct svc_req *); extern int gluster_block_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); #else /* K&R C */ #define BLOCK_CREATE 1 extern blockResponse * block_create_1(); extern blockResponse * block_create_1_svc(); +#define BLOCK_DELETE 2 +extern blockResponse * block_delete_1(); +extern blockResponse * block_delete_1_svc(); +#define BLOCK_EXEC 3 +extern blockResponse * block_exec_1(); +extern blockResponse * block_exec_1_svc(); extern int gluster_block_1_freeresult (); #endif /* K&R C */ @@ -81,11 +135,19 @@ extern int gluster_block_1_freeresult (); #if defined(__STDC__) || defined(__cplusplus) extern bool_t xdr_blockCreate (XDR *, blockCreate*); extern bool_t xdr_blockCreateCli (XDR *, blockCreateCli*); +extern bool_t xdr_blockDeleteCli (XDR *, blockDeleteCli*); +extern bool_t xdr_blockDelete (XDR *, blockDelete*); +extern bool_t xdr_blockInfoCli (XDR *, blockInfoCli*); +extern bool_t xdr_blockListCli (XDR *, blockListCli*); extern bool_t xdr_blockResponse (XDR *, blockResponse*); #else /* K&R C */ extern bool_t xdr_blockCreate (); extern bool_t xdr_blockCreateCli (); +extern bool_t xdr_blockDeleteCli (); +extern bool_t xdr_blockDelete (); +extern bool_t xdr_blockInfoCli (); +extern bool_t xdr_blockListCli (); extern bool_t xdr_blockResponse (); #endif /* K&R C */ diff --git a/rpc/block.x b/rpc/block.x index b563c9e..aebe451 100644 --- a/rpc/block.x +++ b/rpc/block.x @@ -1,4 +1,3 @@ - struct blockCreate { char volume[255]; char volfileserver[255]; @@ -15,6 +14,26 @@ struct blockCreateCli { string block_hosts<>; }; +struct blockDeleteCli { + char block_name[255]; + string block_hosts<>; +}; + +struct blockDelete { + char block_name[255]; + char gbid[127]; +}; + +struct blockInfoCli { + char block_name[255]; + char volume[255]; +}; + +struct blockListCli { + char volume[255]; + u_quad_t offset; /* dentry d_name offset */ +}; + struct blockResponse { int exit; /* exit code of the command */ string out<>; /* json output */ @@ -25,11 +44,16 @@ struct blockResponse { program GLUSTER_BLOCK_CLI { version GLUSTER_BLOCK_CLI_VERS { blockResponse BLOCK_CREATE_CLI(blockCreateCli) = 1; + blockResponse BLOCK_LIST_CLI(blockListCli) = 2; + blockResponse BLOCK_INFO_CLI(blockInfoCli) = 3; + blockResponse BLOCK_DELETE_CLI(blockDeleteCli) = 4; } = 1; } = 212153113; /* B2 L12 O15 C3 K11 C3 */ program GLUSTER_BLOCK { version GLUSTER_BLOCK_VERS { blockResponse BLOCK_CREATE(blockCreate) = 1; + blockResponse BLOCK_DELETE(blockDelete) = 2; + blockResponse BLOCK_EXEC(string) = 3; } = 1; } = 21215311; /* B2 L12 O15 C3 K11 */ diff --git a/rpc/block_clnt.c b/rpc/block_clnt.c index ae95d9a..2e96709 100644 --- a/rpc/block_clnt.c +++ b/rpc/block_clnt.c @@ -25,6 +25,51 @@ block_create_cli_1(blockCreateCli *argp, CLIENT *clnt) } blockResponse * +block_list_cli_1(blockListCli *argp, CLIENT *clnt) +{ + static blockResponse clnt_res; + + memset((char *)&clnt_res, 0, sizeof(clnt_res)); + if (clnt_call (clnt, BLOCK_LIST_CLI, + (xdrproc_t) xdr_blockListCli, (caddr_t) argp, + (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res, + TIMEOUT) != RPC_SUCCESS) { + return (NULL); + } + return (&clnt_res); +} + +blockResponse * +block_info_cli_1(blockInfoCli *argp, CLIENT *clnt) +{ + static blockResponse clnt_res; + + memset((char *)&clnt_res, 0, sizeof(clnt_res)); + if (clnt_call (clnt, BLOCK_INFO_CLI, + (xdrproc_t) xdr_blockInfoCli, (caddr_t) argp, + (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res, + TIMEOUT) != RPC_SUCCESS) { + return (NULL); + } + return (&clnt_res); +} + +blockResponse * +block_delete_cli_1(blockDeleteCli *argp, CLIENT *clnt) +{ + static blockResponse clnt_res; + + memset((char *)&clnt_res, 0, sizeof(clnt_res)); + if (clnt_call (clnt, BLOCK_DELETE_CLI, + (xdrproc_t) xdr_blockDeleteCli, (caddr_t) argp, + (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res, + TIMEOUT) != RPC_SUCCESS) { + return (NULL); + } + return (&clnt_res); +} + +blockResponse * block_create_1(blockCreate *argp, CLIENT *clnt) { static blockResponse clnt_res; @@ -38,3 +83,33 @@ block_create_1(blockCreate *argp, CLIENT *clnt) } return (&clnt_res); } + +blockResponse * +block_delete_1(blockDelete *argp, CLIENT *clnt) +{ + static blockResponse clnt_res; + + memset((char *)&clnt_res, 0, sizeof(clnt_res)); + if (clnt_call (clnt, BLOCK_DELETE, + (xdrproc_t) xdr_blockDelete, (caddr_t) argp, + (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res, + TIMEOUT) != RPC_SUCCESS) { + return (NULL); + } + return (&clnt_res); +} + +blockResponse * +block_exec_1(char **argp, CLIENT *clnt) +{ + static blockResponse clnt_res; + + memset((char *)&clnt_res, 0, sizeof(clnt_res)); + if (clnt_call (clnt, BLOCK_EXEC, + (xdrproc_t) xdr_wrapstring, (caddr_t) argp, + (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res, + TIMEOUT) != RPC_SUCCESS) { + return (NULL); + } + return (&clnt_res); +} diff --git a/rpc/block_svc.c b/rpc/block_svc.c index 4c054f5..345581f 100644 --- a/rpc/block_svc.c +++ b/rpc/block_svc.c @@ -28,6 +28,9 @@ gluster_block_cli_1(struct svc_req *rqstp, register SVCXPRT *transp) { union { blockCreateCli block_create_cli_1_arg; + blockListCli block_list_cli_1_arg; + blockInfoCli block_info_cli_1_arg; + blockDeleteCli block_delete_cli_1_arg; } argument; char *result; xdrproc_t _xdr_argument, _xdr_result; @@ -44,6 +47,24 @@ gluster_block_cli_1(struct svc_req *rqstp, register SVCXPRT *transp) local = (char *(*)(char *, struct svc_req *)) block_create_cli_1_svc; break; + case BLOCK_LIST_CLI: + _xdr_argument = (xdrproc_t) xdr_blockListCli; + _xdr_result = (xdrproc_t) xdr_blockResponse; + local = (char *(*)(char *, struct svc_req *)) block_list_cli_1_svc; + break; + + case BLOCK_INFO_CLI: + _xdr_argument = (xdrproc_t) xdr_blockInfoCli; + _xdr_result = (xdrproc_t) xdr_blockResponse; + local = (char *(*)(char *, struct svc_req *)) block_info_cli_1_svc; + break; + + case BLOCK_DELETE_CLI: + _xdr_argument = (xdrproc_t) xdr_blockDeleteCli; + _xdr_result = (xdrproc_t) xdr_blockResponse; + local = (char *(*)(char *, struct svc_req *)) block_delete_cli_1_svc; + break; + default: svcerr_noproc (transp); return; @@ -69,6 +90,8 @@ gluster_block_1(struct svc_req *rqstp, register SVCXPRT *transp) { union { blockCreate block_create_1_arg; + blockDelete block_delete_1_arg; + char *block_exec_1_arg; } argument; char *result; xdrproc_t _xdr_argument, _xdr_result; @@ -85,6 +108,18 @@ gluster_block_1(struct svc_req *rqstp, register SVCXPRT *transp) local = (char *(*)(char *, struct svc_req *)) block_create_1_svc; break; + case BLOCK_DELETE: + _xdr_argument = (xdrproc_t) xdr_blockDelete; + _xdr_result = (xdrproc_t) xdr_blockResponse; + local = (char *(*)(char *, struct svc_req *)) block_delete_1_svc; + break; + + case BLOCK_EXEC: + _xdr_argument = (xdrproc_t) xdr_wrapstring; + _xdr_result = (xdrproc_t) xdr_blockResponse; + local = (char *(*)(char *, struct svc_req *)) block_exec_1_svc; + break; + default: svcerr_noproc (transp); return; diff --git a/rpc/block_xdr.c b/rpc/block_xdr.c index 91775fa..1b9a4c6 100644 --- a/rpc/block_xdr.c +++ b/rpc/block_xdr.c @@ -45,6 +45,52 @@ xdr_blockCreateCli (XDR *xdrs, blockCreateCli *objp) } bool_t +xdr_blockDeleteCli (XDR *xdrs, blockDeleteCli *objp) +{ + if (!xdr_vector (xdrs, (char *)objp->block_name, 255, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + if (!xdr_string (xdrs, &objp->block_hosts, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_blockDelete (XDR *xdrs, blockDelete *objp) +{ + if (!xdr_vector (xdrs, (char *)objp->block_name, 255, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + if (!xdr_vector (xdrs, (char *)objp->gbid, 127, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + return TRUE; +} + +bool_t +xdr_blockInfoCli (XDR *xdrs, blockInfoCli *objp) +{ + if (!xdr_vector (xdrs, (char *)objp->block_name, 255, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + if (!xdr_vector (xdrs, (char *)objp->volume, 255, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + return TRUE; +} + +bool_t +xdr_blockListCli (XDR *xdrs, blockListCli *objp) +{ + if (!xdr_vector (xdrs, (char *)objp->volume, 255, + sizeof (char), (xdrproc_t) xdr_char)) + return FALSE; + if (!xdr_u_quad_t (xdrs, &objp->offset)) + return FALSE; + return TRUE; +} + +bool_t xdr_blockResponse (XDR *xdrs, blockResponse *objp) { if (!xdr_int (xdrs, &objp->exit)) |