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 |