(2012/09/05 12:39), Liu Yuan wrote:
On 09/02/2012 10:34 AM, Hitoshi Mitake wrote:
@@ -301,7 +319,7 @@ int gateway_write_obj(struct request *req)
if (sys->enable_write_cache && !req->local && !bypass_object_cache(req))
return object_cache_handle_request(req);
- return gateway_forward_request(req);
+ return gateway_forward_request(req, 0);
}
int gateway_create_and_write_obj(struct request *req)
@@ -309,10 +327,10 @@ int gateway_create_and_write_obj(struct request *req)
if (sys->enable_write_cache && !req->local && !bypass_object_cache(req))
return object_cache_handle_request(req);
- return gateway_forward_request(req);
+ return gateway_forward_request(req, 0);
}
int gateway_remove_obj(struct request *req)
{
- return gateway_forward_request(req);
+ return gateway_forward_request(req, 0);
}
I'd suggest following control flow structure if possible:
...
nr_to_send= init_target_nodes(target_nodes, all_node);
for (i = 0; i < nr_to_send; i++) {
struct sockfd *sfd;
struct node_id *nid;
struct sd_node *n;
n = target_nodes[i];
if (node_is_local(n)) {
local = i;
continue;
}
nid = &v->nid;
sfd = sheep_get_sockfd(nid);
if (!sfd) {
err_ret = SD_RES_NETWORK_ERROR;
break;
}
ret = send_req(sfd->fd, &hdr, req->data, &wlen);
if (ret) {
sheep_del_sockfd(nid, sfd);
err_ret = SD_RES_NETWORK_ERROR;
dprintf("fail %d\n", ret);
break;
}
write_info_advance(&wi, nid, sfd);
}
...
For init_target_nodes(), we need a new helper oid_to_nodes().
Do you mean that target_nodes is an array of struct node_id?
If so, I agree with your opinion. I'll be able to reduce the conditional
branches.
Thanks,
Hitoshi
--
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog