diff options
Diffstat (limited to 'xlators/protocol/client')
-rw-r--r-- | xlators/protocol/client/src/client-protocol.c | 164 | ||||
-rw-r--r-- | xlators/protocol/client/src/client-protocol.h | 17 |
2 files changed, 2 insertions, 179 deletions
diff --git a/xlators/protocol/client/src/client-protocol.c b/xlators/protocol/client/src/client-protocol.c index e6b47514684..24e0d6c3171 100644 --- a/xlators/protocol/client/src/client-protocol.c +++ b/xlators/protocol/client/src/client-protocol.c @@ -324,52 +324,6 @@ save_frame (transport_t *trans, call_frame_t *frame, } -int -client_get_forgets (xlator_t *this, client_forget_t *forget) -{ - call_frame_t *fr = NULL; - gf_hdr_common_t *hdr = NULL; - size_t hdrlen = 0; - gf_cbk_forget_req_t *req = NULL; - int ret = -1; - client_conf_t *conf = NULL; - int count = 0; - int index = 0; - - conf = this->private; - - if (conf->forget.count > 0) { - count = conf->forget.count; - - hdrlen = gf_hdr_len (req, (count * sizeof (int64_t))); - hdr = gf_hdr_new (req, (count * sizeof (int64_t))); - GF_VALIDATE_OR_GOTO (this->name, hdr, out); - - req = gf_param (hdr); - - req->count = hton32 (count); - for (index = 0; index < count; index++) { - req->ino_array[index] = - hton64 (conf->forget.ino_array[index]); - } - - fr = create_frame (this, this->ctx->pool); - GF_VALIDATE_OR_GOTO (this->name, fr, out); - - conf->forget.frames_in_transit++; - - forget->frame = fr; - forget->hdr = hdr; - forget->hdrlen = hdrlen; - - ret = count; - - conf->forget.count = 0; - } - out: - return ret; -} - void client_ping_timer_expired (void *data) @@ -574,9 +528,6 @@ protocol_client_xfer (call_frame_t *frame, xlator_t *this, transport_t *trans, int32_t ret = -1; int start_ping = 0; gf_hdr_common_t rsphdr = {0, }; - client_forget_t forget = {0, }; - uint8_t send_forget = 0; - conf = this->private; @@ -586,28 +537,6 @@ protocol_client_xfer (call_frame_t *frame, xlator_t *this, transport_t *trans, } conn = trans->xl_private; - if (!((type == GF_OP_TYPE_CBK_REQUEST) && - (op == GF_CBK_FORGET))) - { - LOCK (&conf->forget.lock); - { - ret = client_get_forgets (this, &forget); - if (ret <= 0) - send_forget = 0; - else - send_forget = 1; - } - UNLOCK (&conf->forget.lock); - - if (send_forget) { - ret = protocol_client_xfer (forget.frame, this, NULL, - GF_OP_TYPE_CBK_REQUEST, - GF_CBK_FORGET, - forget.hdr, forget.hdrlen, - NULL, 0, NULL); - } - } - pthread_mutex_lock (&conn->lock); { callid = ++conn->callid; @@ -3398,65 +3327,6 @@ unwind: } -/* - * CBKs - */ -/* - * client_forget - forget function for client protocol - * @this: - * @inode: - * - * not for external reference - */ -int -client_forget (xlator_t *this, inode_t *inode) -{ - ino_t ino = 0; - client_conf_t *conf = NULL; - client_forget_t forget = {0,}; - uint8_t send_forget = 0; - int32_t ret = -1; - - GF_VALIDATE_OR_GOTO ("client", this, out); - conf = this->private; - - GF_VALIDATE_OR_GOTO (this->name, inode, out); - - ret = inode_ctx_get (inode, this, &ino); - if (inode->ino && ret < 0) { - gf_log (this->name, GF_LOG_DEBUG, - "FORGET %"PRId64": " - "failed to get remote inode number", - inode->ino); - } - - LOCK (&conf->forget.lock); - { - conf->forget.ino_array[conf->forget.count++] = ino; - - if ((!conf->forget.frames_in_transit) || - (conf->forget.count >= CLIENT_PROTO_FORGET_LIMIT)) { - ret = client_get_forgets (this, &forget); - if (ret <= 0) - send_forget = 0; - else - send_forget = 1; - } - } - UNLOCK (&conf->forget.lock); - - if (send_forget) { - ret = protocol_client_xfer (forget.frame, this, - CLIENT_CHANNEL (this,CHANNEL_BULK), - GF_OP_TYPE_CBK_REQUEST, - GF_CBK_FORGET, - forget.hdr, forget.hdrlen, - NULL, 0, NULL); - } -out: - return 0; -} - /** * client_releasedir - releasedir function for client protocol * @this: this translator structure @@ -5798,36 +5668,7 @@ int client_forget_cbk (call_frame_t *frame, gf_hdr_common_t *hdr, size_t hdrlen, struct iobuf *iobuf) { - client_conf_t *conf = NULL; - client_forget_t forget = {0, }; - uint8_t send_forget = 0; - int32_t ret = -1; - - - conf = frame->this->private; - LOCK (&conf->forget.lock); - { - conf->forget.frames_in_transit--; - - ret = client_get_forgets (frame->this, &forget); - if (ret <= 0) - send_forget = 0; - else - send_forget = 1; - } - UNLOCK (&conf->forget.lock); - - if (send_forget) { - ret = protocol_client_xfer (forget.frame, frame->this, - CLIENT_CHANNEL (frame->this, - CHANNEL_BULK), - GF_OP_TYPE_CBK_REQUEST, - GF_CBK_FORGET, - forget.hdr, forget.hdrlen, - NULL, 0, NULL); - } - - STACK_DESTROY (frame->root); + gf_log ("", GF_LOG_CRITICAL, "fop not implemented"); return 0; } @@ -6024,7 +5865,6 @@ init (xlator_t *this) conf = CALLOC (1, sizeof (client_conf_t)); - LOCK_INIT (&conf->forget.lock); pthread_mutex_init (&conf->mutex, NULL); INIT_LIST_HEAD (&conf->saved_fds); @@ -6102,7 +5942,6 @@ fini (xlator_t *this) this->private = NULL; if (conf) { - LOCK_DESTROY (&conf->forget.lock); FREE (conf); } return; @@ -6430,7 +6269,6 @@ struct xlator_mops mops = { }; struct xlator_cbks cbks = { - .forget = client_forget, .release = client_release, .releasedir = client_releasedir }; diff --git a/xlators/protocol/client/src/client-protocol.h b/xlators/protocol/client/src/client-protocol.h index 86107f9bc9e..aef58ae30b0 100644 --- a/xlators/protocol/client/src/client-protocol.h +++ b/xlators/protocol/client/src/client-protocol.h @@ -31,7 +31,6 @@ #include "timer.h" #include "byte-order.h" -#define CLIENT_PROTO_FORGET_LIMIT 128 #define CLIENT_PORT_CEILING 1023 #define GF_CLIENT_INODE_SELF 0 @@ -78,16 +77,7 @@ typedef struct _client_fd_ctx { } client_fd_ctx_t; struct _client_conf { - transport_t *transport[CHANNEL_MAX]; - - /* enhancement for 'forget', a must required where lot - of stats happening */ - struct { - uint64_t ino_array[CLIENT_PROTO_FORGET_LIMIT + 4]; - uint32_t count; - uint32_t frames_in_transit; - gf_lock_t lock; - } forget; + transport_t *transport[CHANNEL_MAX]; struct list_head saved_fds; struct timeval last_sent; struct timeval last_received; @@ -117,11 +107,6 @@ typedef struct { fd_t *fd; } client_local_t; -typedef struct { - gf_hdr_common_t *hdr; - size_t hdrlen; - call_frame_t *frame; -} client_forget_t; static inline void gf_string_to_stat(char *string, struct stat *stbuf) |