[Sheepdog] [PATCH 2/4] sheep: remove unnecessary guard check

Liu Yuan namei.unix at gmail.com
Wed Apr 11 16:12:51 CEST 2012


From: Liu Yuan <tailai.ly at taobao.com>

- setup_access_to_local_objects() does the job to find
  the if the targeted object is local, so we don't need
  to check it again.

- SD_FLAG_CMD_RECOVERY and SD_OP_READ_OBJ should be paired
  by programmers, since it is just internal API, we should
  trust 'em.

Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
---
 sheep/sdnet.c |   33 ++++-----------------------------
 1 files changed, 4 insertions(+), 29 deletions(-)

diff --git a/sheep/sdnet.c b/sheep/sdnet.c
index d366cd0..d258bbd 100644
--- a/sheep/sdnet.c
+++ b/sheep/sdnet.c
@@ -218,33 +218,6 @@ static int check_epoch(struct request *req)
 	return ret;
 }
 
-static int __is_access_to_recoverying_objects(struct request *req)
-{
-	if (req->rq.flags & SD_FLAG_CMD_RECOVERY) {
-		if (req->rq.opcode != SD_OP_READ_OBJ)
-			eprintf("bug\n");
-		return 0;
-	}
-
-	if (is_recoverying_oid(req->local_oid))
-		return 1;
-
-	return 0;
-}
-
-static int __is_access_to_busy_objects(struct request *req)
-{
-	if (req->rq.flags & SD_FLAG_CMD_RECOVERY) {
-		if (req->rq.opcode != SD_OP_READ_OBJ)
-			eprintf("bug\n");
-		return 0;
-	}
-
-	if (is_access_to_busy_objects(req->local_oid))
-		return 1;
-
-	return 0;
-}
 static int check_request(struct request *req)
 {
 	if (!req->local_oid && !req->local_cow_oid)
@@ -262,19 +235,21 @@ static int check_request(struct request *req)
 	if (!req->local_oid)
 		return 0;
 
-	if (__is_access_to_recoverying_objects(req)) {
+	if (is_recoverying_oid(req->local_oid)) {
 		if (req->rq.flags & SD_FLAG_CMD_IO_LOCAL) {
+			/* Sheep peer request */
 			req->rp.result = SD_RES_NEW_NODE_VER;
 			sys->nr_outstanding_io++;
 			req->work.done(&req->work);
 		} else {
+			/* Gateway request */
 			list_del(&req->r_wlist);
 			list_add_tail(&req->r_wlist, &sys->req_wait_for_obj_list);
 		}
 		return -1;
 	}
 
-	if (__is_access_to_busy_objects(req)) {
+	if (is_access_to_busy_objects(req->local_oid)) {
 		list_del(&req->r_wlist);
 		list_add_tail(&req->r_wlist, &sys->req_wait_for_obj_list);
 		return -1;
-- 
1.7.8.2




More information about the sheepdog mailing list