[Sheepdog] [PATCH] sheep: call req_done directly
Liu Yuan
namei.unix at gmail.com
Tue May 15 10:59:38 CEST 2012
On 05/15/2012 04:53 PM, Christoph Hellwig wrote:
> Signed-off-by: Christoph Hellwig <hch at lst.de>
>
> ---
> sheep/group.c | 2 +-
> sheep/sdnet.c | 16 ++++++----------
> sheep/sheep_priv.h | 5 ++---
> 3 files changed, 9 insertions(+), 14 deletions(-)
>
> Index: sheepdog/sheep/group.c
> ===================================================================
> --- sheepdog.orig/sheep/group.c 2012-05-15 10:32:38.607973725 +0200
> +++ sheepdog/sheep/group.c 2012-05-15 10:34:54.351972431 +0200
> @@ -638,7 +638,7 @@ static void __sd_notify_done(struct even
> if (has_process_main(req->op))
> memcpy(req->data, msg->data, msg->rsp.data_length);
> memcpy(&req->rp, &msg->rsp, sizeof(req->rp));
> - req->done(req);
> + req_done(req);
> }
>
> void sd_notify_handler(struct sd_node *sender, void *msg, size_t msg_len)
> Index: sheepdog/sheep/sdnet.c
> ===================================================================
> --- sheepdog.orig/sheep/sdnet.c 2012-05-15 10:32:38.607973725 +0200
> +++ sheepdog/sheep/sdnet.c 2012-05-15 10:34:54.355972432 +0200
> @@ -129,7 +129,7 @@ static void io_op_done(struct work *work
> resume_pending_requests();
> resume_recovery_work();
>
> - req->done(req);
> + req_done(req);
> return;
>
> retry:
> @@ -153,7 +153,7 @@ static void local_op_done(struct work *w
> &req->rp, req->data);
> }
>
> - req->done(req);
> + req_done(req);
> }
>
> static void cluster_op_done(struct work *work)
> @@ -266,8 +266,7 @@ static void queue_request(struct request
> if (!req->op) {
> eprintf("invalid opcode %d\n", hdr->opcode);
> rsp->result = SD_RES_INVALID_PARMS;
> - req->done(req);
> - return;
> + goto done;
> }
>
> dprintf("%x\n", hdr->opcode);
> @@ -329,8 +328,7 @@ static void queue_request(struct request
> } else {
> eprintf("unknown operation %d\n", hdr->opcode);
> rsp->result = SD_RES_SYSTEM_ERROR;
> - req->done(req);
> - return;
> + goto done;
> }
>
> list_add_tail(&req->request_list, &sys->request_queue);
> @@ -338,7 +336,7 @@ static void queue_request(struct request
> process_request_event_queues();
> return;
> done:
> - req->done(req);
> + req_done(req);
> }
>
> static void client_incref(struct client_info *ci);
> @@ -381,7 +379,7 @@ static void free_request(struct request
> free(req);
> }
>
> -static void req_done(struct request *req)
> +void req_done(struct request *req)
> {
> struct client_info *ci = req->ci;
>
> @@ -470,8 +468,6 @@ static void client_rx_handler(struct cli
> else
> req->rp.data_length = hdr->data_length;
>
> - req->done = req_done;
> -
> dprintf("connection from: %s:%d\n", ci->conn.ipstr, ci->conn.port);
> queue_request(req);
> }
> Index: sheepdog/sheep/sheep_priv.h
> ===================================================================
> --- sheepdog.orig/sheep/sheep_priv.h 2012-05-15 10:32:38.607973725 +0200
> +++ sheepdog/sheep/sheep_priv.h 2012-05-15 10:34:54.355972432 +0200
> @@ -63,8 +63,6 @@ struct client_info {
> struct request;
> struct vnode_info;
>
> -typedef void (*req_end_t) (struct request *);
> -
> struct request {
> struct sd_req rq;
> struct sd_rsp rp;
> @@ -84,7 +82,6 @@ struct request {
> struct vnode_info *vnodes;
> int check_consistency;
>
> - req_end_t done;
> struct work work;
> };
>
> @@ -312,6 +309,8 @@ int init_objlist_cache(void);
> int objlist_cache_rb_remove(struct rb_root *root, uint64_t oid);
> int check_and_insert_objlist_cache(uint64_t oid);
>
> +void req_done(struct request *req);
> +
> /* Operations */
>
> struct sd_op_template *get_sd_op(uint8_t opcode);
Applied, thanks.
Yuan
More information about the sheepdog
mailing list