summaryrefslogtreecommitdiffstats
path: root/xlators/protocol/client/src/client-protocol.c
diff options
context:
space:
mode:
authorAmar Tumballi <amar@gluster.com>2009-07-01 00:47:29 +0000
committerAnand V. Avati <avati@dev.gluster.com>2009-07-01 18:32:21 -0700
commit8301e2ffc44beb09cec7e01aa8672e857c6c3977 (patch)
tree4430d4f22445d2470f8085796144f8b5bf7999e0 /xlators/protocol/client/src/client-protocol.c
parente2a6e26f446605cabf89a402a851cfaf5c5f6036 (diff)
cleanup client_forget
upon detailed inspection of 'forget' behavior, it became evident that forgets from client should not goto server side, as server keeps its own purging mechanism to forget its inodes. if client sends all forget to server, many highly used required inodes may get freed up (it will surely effect io-cache buffers on server side) Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
Diffstat (limited to 'xlators/protocol/client/src/client-protocol.c')
-rw-r--r--xlators/protocol/client/src/client-protocol.c164
1 files changed, 1 insertions, 163 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
};