diff options
author | Anand V. Avati <avati@amp.gluster.com> | 2009-04-11 18:15:11 +0530 |
---|---|---|
committer | Anand V. Avati <avati@amp.gluster.com> | 2009-04-12 11:33:47 +0530 |
commit | ad86fba6e22b10b06aa44426c2ab3591c54ed0a7 (patch) | |
tree | d2a898bdf2f80e878f18887b4e87c7c013442c74 | |
parent | 2e743ddc4a89f8a4d0c9ff0f16a6faf0218e453f (diff) |
updated protocol/client with new readv writev prototypes
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
-rw-r--r-- | xlators/protocol/client/src/client-protocol.c | 224 | ||||
-rw-r--r-- | xlators/protocol/client/src/saved-frames.c | 9 | ||||
-rw-r--r-- | xlators/protocol/client/src/saved-frames.h | 2 |
3 files changed, 110 insertions, 125 deletions
diff --git a/xlators/protocol/client/src/client-protocol.c b/xlators/protocol/client/src/client-protocol.c index 55afa11e1e6..ce4fca95be1 100644 --- a/xlators/protocol/client/src/client-protocol.c +++ b/xlators/protocol/client/src/client-protocol.c @@ -48,13 +48,13 @@ int protocol_client_cleanup (transport_t *trans); int protocol_client_interpret (xlator_t *this, transport_t *trans, char *hdr_p, size_t hdrlen, - char *buf_p, size_t buflen); + struct iobuf *iobuf); int protocol_client_xfer (call_frame_t *frame, xlator_t *this, transport_t *trans, int type, int op, gf_hdr_common_t *hdr, size_t hdrlen, struct iovec *vector, int count, - dict_t *refs); + struct iobref *iobref); static gf_op_t gf_fops[]; static gf_op_t gf_mops[]; @@ -290,7 +290,6 @@ call_bail (void *data) struct saved_frame *tmp = NULL; call_frame_t *frame = NULL; gf_hdr_common_t hdr = {0, }; - dict_t *reply = NULL; char **gf_op_list = NULL; gf_op_t *gf_ops = NULL; struct tm frame_sent_tm; @@ -359,9 +358,6 @@ call_bail (void *data) } pthread_mutex_unlock (&conn->lock); - reply = get_new_dict(); - dict_ref (reply); - hdr.rsp.op_ret = hton32 (-1); hdr.rsp.op_errno = hton32 (ENOTCONN); @@ -394,14 +390,12 @@ call_bail (void *data) hdr.op = hton32 (trav->op); frame = trav->frame; - frame->root->rsp_refs = reply; - gf_ops[trav->op] (frame, &hdr, sizeof (hdr), NULL, 0); + gf_ops[trav->op] (frame, &hdr, sizeof (hdr), NULL); list_del_init (&trav->list); FREE (trav); } - dict_unref (reply); out: return; } @@ -614,7 +608,7 @@ client_start_ping (void *data) int client_ping_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { xlator_t *this = NULL; transport_t *trans = NULL; @@ -663,7 +657,7 @@ protocol_client_xfer (call_frame_t *frame, xlator_t *this, transport_t *trans, int type, int op, gf_hdr_common_t *hdr, size_t hdrlen, struct iovec *vector, int count, - dict_t *refs) + struct iobref *iobref) { client_conf_t *conf = NULL; client_connection_t *conn = NULL; @@ -728,7 +722,7 @@ protocol_client_xfer (call_frame_t *frame, xlator_t *this, transport_t *trans, ((type == GF_OP_TYPE_MOP_REQUEST) && (op == GF_MOP_SETVOLUME))) { ret = transport_submit (trans, (char *)hdr, hdrlen, - vector, count, refs); + vector, count, iobref); } if ((ret >= 0) && frame) { @@ -756,13 +750,13 @@ protocol_client_xfer (call_frame_t *frame, xlator_t *this, transport_t *trans, if (type == GF_OP_TYPE_FOP_REQUEST) { rsphdr.type = GF_OP_TYPE_FOP_REPLY; - gf_fops[op] (frame, &rsphdr, sizeof (rsphdr), NULL, 0); + gf_fops[op] (frame, &rsphdr, sizeof (rsphdr), NULL); } else if (type == GF_OP_TYPE_MOP_REQUEST) { rsphdr.type = GF_OP_TYPE_MOP_REPLY; - gf_mops[op] (frame, &rsphdr, sizeof (rsphdr), NULL, 0); + gf_mops[op] (frame, &rsphdr, sizeof (rsphdr), NULL); } else { rsphdr.type = GF_OP_TYPE_CBK_REPLY; - gf_cbks[op] (frame, &rsphdr, sizeof (rsphdr), NULL, 0); + gf_cbks[op] (frame, &rsphdr, sizeof (rsphdr), NULL); } FREE (hdr); @@ -1889,7 +1883,8 @@ client_writev (call_frame_t *frame, fd_t *fd, struct iovec *vector, int32_t count, - off_t offset) + off_t offset, + struct iobref *iobref) { gf_hdr_common_t *hdr = NULL; gf_fop_write_req_t *req = NULL; @@ -1907,7 +1902,8 @@ client_writev (call_frame_t *frame, fd, vector, count, - offset); + offset, + iobref); return 0; } @@ -1934,9 +1930,7 @@ client_writev (call_frame_t *frame, ret = protocol_client_xfer (frame, this, CLIENT_CHANNEL (this, CHANNEL_BULK), GF_OP_TYPE_FOP_REQUEST, GF_FOP_WRITE, - hdr, hdrlen, vector, count, - frame->root->req_refs); - + hdr, hdrlen, vector, count, iobref); return ret; unwind: if (hdr) @@ -3857,10 +3851,7 @@ client_setdents (call_frame_t *frame, gf_hdr_common_t *hdr = NULL; gf_fop_setdents_req_t *req = NULL; int64_t remote_fd = 0; - char *buffer = NULL; char *ptr = NULL; - data_t *buf_data = NULL; - dict_t *reply_dict = NULL; dir_entry_t *trav = NULL; uint32_t len = 0; int32_t buf_len = 0; @@ -3871,6 +3862,8 @@ client_setdents (call_frame_t *frame, size_t hdrlen = -1; struct iovec vector[1]; client_conf_t *conf = this->private; + struct iobref *iobref = NULL; + struct iobuf *iobuf = NULL; if (conf->child) { /* */ @@ -3909,10 +3902,10 @@ client_setdents (call_frame_t *frame, len += 256; // max possible for statbuf; trav = trav->next; } - buffer = CALLOC (1, len); - GF_VALIDATE_OR_GOTO (this->name, buffer, unwind); + iobuf = iobuf_get (this->ctx->iobuf_pool); + GF_VALIDATE_OR_GOTO (this->name, iobuf, unwind); - ptr = buffer; + ptr = iobuf->ptr; trav = entries->next; while (trav) { @@ -3968,7 +3961,7 @@ client_setdents (call_frame_t *frame, trav = trav->next; ptr += this_len; } - buf_len = strlen (buffer); + buf_len = strlen (iobuf->ptr); hdrlen = gf_hdr_len (req, 0); hdr = gf_hdr_new (req, 0); @@ -3980,29 +3973,29 @@ client_setdents (call_frame_t *frame, req->flags = hton32 (flags); req->count = hton32 (count); - { - buf_data = get_new_data (); - GF_VALIDATE_OR_GOTO (this->name, buf_data, unwind); - reply_dict = get_new_dict(); - GF_VALIDATE_OR_GOTO (this->name, reply_dict, unwind); - - buf_data->data = buffer; - buf_data->len = buf_len; - dict_set (reply_dict, NULL, buf_data); - frame->root->rsp_refs = dict_ref (reply_dict); - vector[0].iov_base = buffer; - vector[0].iov_len = buf_len; - vec_count = 1; - } + iobref = iobref_new (); + iobref_add (iobref, iobuf); ret = protocol_client_xfer (frame, this, CLIENT_CHANNEL (this, CHANNEL_BULK), GF_OP_TYPE_FOP_REQUEST, GF_FOP_SETDENTS, - hdr, hdrlen, vector, vec_count, - frame->root->rsp_refs); + hdr, hdrlen, vector, vec_count, iobref); + + if (iobref) + iobref_unref (iobref); + + if (iobuf) + iobuf_unref (iobuf); return ret; unwind: + + if (iobref) + iobref_unref (iobref); + + if (iobuf) + iobuf_unref (iobuf); + STACK_UNWIND (frame, op_ret, op_errno); return 0; } @@ -4263,7 +4256,7 @@ unwind: int32_t client_fxattrop_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_xattrop_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -4322,7 +4315,7 @@ fail: int32_t client_xattrop_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_xattrop_rsp_t *rsp = NULL; int32_t op_ret = -1; @@ -4388,7 +4381,7 @@ fail: int32_t client_fchown_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_fchown_rsp_t *rsp = NULL; @@ -4421,7 +4414,7 @@ client_fchown_cbk (call_frame_t *frame, int32_t client_fchmod_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_fchmod_rsp_t *rsp = NULL; @@ -4454,7 +4447,7 @@ client_fchmod_cbk (call_frame_t *frame, int client_create_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_create_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -4522,7 +4515,7 @@ client_create_cbk (call_frame_t *frame, int32_t client_open_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { int32_t op_ret = -1; int32_t op_errno = ENOTCONN; @@ -4585,7 +4578,7 @@ client_open_cbk (call_frame_t *frame, int client_stat_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_stat_rsp_t *rsp = NULL; @@ -4617,7 +4610,7 @@ client_stat_cbk (call_frame_t *frame, int32_t client_utimens_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_utimens_rsp_t *rsp = NULL; @@ -4648,7 +4641,7 @@ client_utimens_cbk (call_frame_t *frame, int32_t client_chmod_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_chmod_rsp_t *rsp = NULL; @@ -4679,7 +4672,7 @@ client_chmod_cbk (call_frame_t *frame, int32_t client_chown_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_chown_rsp_t *rsp = NULL; @@ -4710,7 +4703,7 @@ client_chown_cbk (call_frame_t *frame, int32_t client_mknod_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_mknod_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -4750,7 +4743,7 @@ client_mknod_cbk (call_frame_t *frame, int32_t client_symlink_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_symlink_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -4790,7 +4783,7 @@ client_symlink_cbk (call_frame_t *frame, int32_t client_link_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_link_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -4830,7 +4823,7 @@ client_link_cbk (call_frame_t *frame, int32_t client_truncate_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_truncate_rsp_t *rsp = NULL; @@ -4861,7 +4854,7 @@ client_truncate_cbk (call_frame_t *frame, int32_t client_fstat_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_fstat_rsp_t *rsp = NULL; @@ -4892,7 +4885,7 @@ client_fstat_cbk (call_frame_t *frame, int32_t client_ftruncate_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_ftruncate_rsp_t *rsp = NULL; @@ -4923,14 +4916,14 @@ client_ftruncate_cbk (call_frame_t *frame, int32_t client_readv_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_read_rsp_t *rsp = NULL; int32_t op_ret = 0; int32_t op_errno = 0; struct iovec vector = {0, }; struct stat stbuf = {0, }; - dict_t *refs = NULL; + struct iobref *iobref = NULL; rsp = gf_param (hdr); @@ -4939,18 +4932,20 @@ client_readv_cbk (call_frame_t *frame, if (op_ret != -1) { gf_stat_to_stat (&rsp->stat, &stbuf); - vector.iov_base = buf; - vector.iov_len = buflen; + vector.iov_base = iobuf->ptr; + vector.iov_len = op_ret; - refs = get_new_dict (); - dict_set (refs, NULL, data_from_dynptr (buf, 0)); - frame->root->rsp_refs = dict_ref (refs); + iobref = iobref_new (); + iobref_add (iobref, iobuf); } - STACK_UNWIND (frame, op_ret, op_errno, &vector, 1, &stbuf); + STACK_UNWIND (frame, op_ret, op_errno, &vector, 1, &stbuf, iobref); + + if (iobref) + iobref_unref (iobref); - if (refs) - dict_unref (refs); + if (iobuf) + iobuf_unref (iobuf); return 0; } @@ -4966,7 +4961,7 @@ client_readv_cbk (call_frame_t *frame, int32_t client_write_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_write_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -4990,7 +4985,7 @@ client_write_cbk (call_frame_t *frame, int32_t client_readdir_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_readdir_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5027,7 +5022,7 @@ client_readdir_cbk (call_frame_t *frame, int32_t client_fsync_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_fsync_rsp_t *rsp = NULL; @@ -5055,7 +5050,7 @@ client_fsync_cbk (call_frame_t *frame, int32_t client_unlink_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_unlink_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5081,7 +5076,7 @@ client_unlink_cbk (call_frame_t *frame, int32_t client_rename_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; gf_fop_rename_rsp_t *rsp = NULL; @@ -5114,7 +5109,7 @@ client_rename_cbk (call_frame_t *frame, int32_t client_readlink_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_readlink_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5144,7 +5139,7 @@ client_readlink_cbk (call_frame_t *frame, int32_t client_mkdir_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_mkdir_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5186,7 +5181,7 @@ client_mkdir_cbk (call_frame_t *frame, int32_t client_flush_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { int32_t op_ret = 0; int32_t op_errno = 0; @@ -5210,7 +5205,7 @@ client_flush_cbk (call_frame_t *frame, int client_opendir_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { int32_t op_ret = -1; int32_t op_errno = ENOTCONN; @@ -5274,7 +5269,7 @@ client_opendir_cbk (call_frame_t *frame, int client_rmdir_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_rmdir_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5300,7 +5295,7 @@ client_rmdir_cbk (call_frame_t *frame, int32_t client_access_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_access_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5329,7 +5324,7 @@ client_access_cbk (call_frame_t *frame, int32_t client_lookup_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct stat stbuf = {0, }; inode_t *inode = NULL; @@ -5490,7 +5485,7 @@ fail: int32_t client_getdents_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_getdents_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5507,7 +5502,7 @@ client_getdents_cbk (call_frame_t *frame, if (op_ret >= 0) { nr_count = ntoh32 (rsp->count); - entry = gf_bin_to_direntry(buf, nr_count); + entry = gf_bin_to_direntry(iobuf->ptr, nr_count); if (entry == NULL) { op_ret = -1; op_errno = EINVAL; @@ -5516,11 +5511,10 @@ client_getdents_cbk (call_frame_t *frame, STACK_UNWIND (frame, op_ret, op_errno, entry, nr_count); - if (op_ret >= 0) { - /* Free the buffer */ - FREE (buf); + if (iobuf) + iobuf_unref (iobuf); + if (entry) gf_free_direntry(entry); - } return 0; } @@ -5535,7 +5529,7 @@ client_getdents_cbk (call_frame_t *frame, int32_t client_statfs_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct statvfs stbuf = {0, }; gf_fop_statfs_rsp_t *rsp = NULL; @@ -5567,7 +5561,7 @@ client_statfs_cbk (call_frame_t *frame, int32_t client_fsyncdir_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { int32_t op_ret = 0; int32_t op_errno = 0; @@ -5590,7 +5584,7 @@ client_fsyncdir_cbk (call_frame_t *frame, int32_t client_setxattr_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_setxattr_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5616,7 +5610,7 @@ client_setxattr_cbk (call_frame_t *frame, int32_t client_getxattr_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_getxattr_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5687,7 +5681,7 @@ fail: int32_t client_removexattr_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { int32_t op_ret = 0; int32_t op_errno = 0; @@ -5710,7 +5704,7 @@ client_removexattr_cbk (call_frame_t *frame, int32_t client_lk_common_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct flock lock = {0,}; gf_fop_lk_rsp_t *rsp = NULL; @@ -5741,7 +5735,7 @@ client_lk_common_cbk (call_frame_t *frame, int32_t client_inodelk_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_inodelk_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5760,7 +5754,7 @@ client_inodelk_cbk (call_frame_t *frame, int32_t client_finodelk_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_finodelk_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5786,7 +5780,7 @@ client_finodelk_cbk (call_frame_t *frame, int32_t client_entrylk_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_entrylk_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5804,7 +5798,7 @@ client_entrylk_cbk (call_frame_t *frame, int32_t client_fentrylk_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_fentrylk_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -5831,7 +5825,7 @@ client_fentrylk_cbk (call_frame_t *frame, int32_t client_setdents_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { int32_t op_ret = 0; int32_t op_errno = 0; @@ -5858,7 +5852,7 @@ client_setdents_cbk (call_frame_t *frame, int32_t client_stats_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { struct xlator_stats stats = {0,}; gf_mop_stats_rsp_t *rsp = NULL; @@ -5950,7 +5944,7 @@ unwind: int32_t client_getspec_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_mop_getspec_rsp_t *rsp = NULL; char *spec_data = NULL; @@ -6015,7 +6009,7 @@ client_checksum (call_frame_t *frame, int32_t client_checksum_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_fop_checksum_rsp_t *rsp = NULL; int32_t op_ret = 0; @@ -6051,7 +6045,7 @@ client_checksum_cbk (call_frame_t *frame, int32_t client_setspec_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { int32_t op_ret = 0; int32_t op_errno = 0; @@ -6074,7 +6068,7 @@ client_setspec_cbk (call_frame_t *frame, int client_setvolume_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { gf_mop_setvolume_rsp_t *rsp = NULL; client_connection_t *conn = NULL; @@ -6215,7 +6209,7 @@ out: int client_enosys_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { STACK_DESTROY (frame->root); return 0; @@ -6334,7 +6328,7 @@ protocol_client_cleanup (transport_t *trans) int client_releasedir_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { STACK_DESTROY (frame->root); return 0; @@ -6344,7 +6338,7 @@ client_releasedir_cbk (call_frame_t *frame, int client_release_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { STACK_DESTROY (frame->root); return 0; @@ -6354,7 +6348,7 @@ client_release_cbk (call_frame_t *frame, int client_forget_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen) + struct iobuf *iobuf) { client_conf_t *conf = NULL; client_forget_t forget = {0, }; @@ -6458,8 +6452,7 @@ static gf_op_t gf_cbks[] = { */ int protocol_client_interpret (xlator_t *this, transport_t *trans, - char *hdr_p, size_t hdrlen, - char *buf_p, size_t buflen) + char *hdr_p, size_t hdrlen, struct iobuf *iobuf) { int ret = -1; call_frame_t *frame = NULL; @@ -6492,7 +6485,7 @@ protocol_client_interpret (xlator_t *this, transport_t *trans, gf_log (trans->xl->name, GF_LOG_WARNING, "invalid fop '%d'", op); } else { - ret = gf_fops[op] (frame, hdr, hdrlen, buf_p, buflen); + ret = gf_fops[op] (frame, hdr, hdrlen, iobuf); } break; case GF_OP_TYPE_MOP_REPLY: @@ -6501,7 +6494,7 @@ protocol_client_interpret (xlator_t *this, transport_t *trans, gf_log (trans->xl->name, GF_LOG_WARNING, "invalid fop '%d'", op); } else { - ret = gf_mops[op] (frame, hdr, hdrlen, buf_p, buflen); + ret = gf_mops[op] (frame, hdr, hdrlen, iobuf); } break; case GF_OP_TYPE_CBK_REPLY: @@ -6510,7 +6503,7 @@ protocol_client_interpret (xlator_t *this, transport_t *trans, gf_log (trans->xl->name, GF_LOG_WARNING, "invalid cbk '%d'", op); } else { - ret = gf_cbks[op] (frame, hdr, hdrlen, buf_p, buflen); + ret = gf_cbks[op] (frame, hdr, hdrlen, iobuf); } break; default: @@ -6766,8 +6759,7 @@ protocol_client_pollin (xlator_t *this, transport_t *trans) { client_conf_t *conf = NULL; int ret = -1; - char *buf = NULL; - size_t buflen = 0; + struct iobuf *iobuf = NULL; char *hdr = NULL; size_t hdrlen = 0; @@ -6779,12 +6771,12 @@ protocol_client_pollin (xlator_t *this, transport_t *trans) } pthread_mutex_unlock (&conf->mutex); - ret = transport_receive (trans, &hdr, &hdrlen, &buf, &buflen); + ret = transport_receive (trans, &hdr, &hdrlen, &iobuf); if (ret == 0) { ret = protocol_client_interpret (this, trans, hdr, hdrlen, - buf, buflen); + iobuf); } /* TODO: use mem-pool */ diff --git a/xlators/protocol/client/src/saved-frames.c b/xlators/protocol/client/src/saved-frames.c index a28f4a49aa1..501045fd148 100644 --- a/xlators/protocol/client/src/saved-frames.c +++ b/xlators/protocol/client/src/saved-frames.c @@ -155,10 +155,6 @@ saved_frames_unwind (xlator_t *this, struct saved_frames *saved_frames, gf_hdr_common_t hdr = {0, }; call_frame_t *frame = NULL; - dict_t *reply = NULL; - - reply = get_new_dict(); - dict_ref (reply); hdr.rsp.op_ret = hton32 (-1); hdr.rsp.op_errno = hton32 (ENOTCONN); @@ -172,17 +168,14 @@ saved_frames_unwind (xlator_t *this, struct saved_frames *saved_frames, hdr.op = hton32 (trav->op); frame = trav->frame; - frame->root->rsp_refs = reply; saved_frames->count--; - gf_ops[trav->op] (frame, &hdr, sizeof (hdr), NULL, 0); + gf_ops[trav->op] (frame, &hdr, sizeof (hdr), NULL); list_del_init (&trav->list); FREE (trav); } - - dict_unref (reply); } diff --git a/xlators/protocol/client/src/saved-frames.h b/xlators/protocol/client/src/saved-frames.h index 2944e8ee0ab..cd628232bb2 100644 --- a/xlators/protocol/client/src/saved-frames.h +++ b/xlators/protocol/client/src/saved-frames.h @@ -34,7 +34,7 @@ /* UGLY: have common typedef b/w saved-frames.c and protocol-client.c */ typedef int32_t (*gf_op_t) (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, - char *buf, size_t buflen); + struct iobuf *iobuf); struct saved_frame { |