Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Aug 2013 07:00:43 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r254208 - in projects/camlock/sys/cam: . ata scsi
Message-ID:  <201308110700.r7B70hnJ008393@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Sun Aug 11 07:00:43 2013
New Revision: 254208
URL: http://svnweb.freebsd.org/changeset/base/254208

Log:
  Reduce number of SIM entry points via sim_action() method call.

Modified:
  projects/camlock/sys/cam/ata/ata_xpt.c
  projects/camlock/sys/cam/cam_xpt.c
  projects/camlock/sys/cam/scsi/scsi_xpt.c

Modified: projects/camlock/sys/cam/ata/ata_xpt.c
==============================================================================
--- projects/camlock/sys/cam/ata/ata_xpt.c	Sun Aug 11 06:57:57 2013	(r254207)
+++ projects/camlock/sys/cam/ata/ata_xpt.c	Sun Aug 11 07:00:43 2013	(r254208)
@@ -1779,7 +1779,7 @@ ata_get_transfer_settings(struct ccb_tra
 
 	device = cts->ccb_h.path->device;
 	sim = cts->ccb_h.path->bus->sim;
-	(*(sim->sim_action))(sim, (union ccb *)cts);
+	xpt_action_default((union ccb *)cts);
 
 	if (cts->protocol == PROTO_UNKNOWN ||
 	    cts->protocol == PROTO_UNSPECIFIED) {
@@ -1941,7 +1941,7 @@ ata_set_transfer_settings(struct ccb_tra
 	}
 
 	if (async_update == FALSE)
-		(*(sim->sim_action))(sim, (union ccb *)cts);
+		xpt_action_default((union ccb *)cts);
 }
 
 /*

Modified: projects/camlock/sys/cam/cam_xpt.c
==============================================================================
--- projects/camlock/sys/cam/cam_xpt.c	Sun Aug 11 06:57:57 2013	(r254207)
+++ projects/camlock/sys/cam/cam_xpt.c	Sun Aug 11 07:00:43 2013	(r254208)
@@ -2408,6 +2408,7 @@ void
 xpt_action_default(union ccb *start_ccb)
 {
 	struct cam_path *path;
+	struct cam_sim *sim;
 
 	path = start_ccb->ccb_h.path;
 	CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_action_default\n"));
@@ -2468,9 +2469,6 @@ xpt_action_default(union ccb *start_ccb)
 		break;
 	}
 	case XPT_CALC_GEOMETRY:
-	{
-		struct cam_sim *sim;
-
 		/* Filter out garbage */
 		if (start_ccb->ccg.block_size == 0
 		 || start_ccb->ccg.volume_size == 0) {
@@ -2498,10 +2496,7 @@ xpt_action_default(union ccb *start_ccb)
 			break;
 		}
 #endif
-		sim = path->bus->sim;
-		(*(sim->sim_action))(sim, start_ccb);
-		break;
-	}
+		goto call_sim;
 	case XPT_ABORT:
 	{
 		union ccb* abort_ccb;
@@ -2562,21 +2557,13 @@ xpt_action_default(union ccb *start_ccb)
 	case XPT_NOTIFY_ACKNOWLEDGE:
 	case XPT_GET_SIM_KNOB:
 	case XPT_SET_SIM_KNOB:
-	{
-		struct cam_sim *sim;
-
-		sim = path->bus->sim;
-		(*(sim->sim_action))(sim, start_ccb);
-		break;
-	}
+	case XPT_GET_TRAN_SETTINGS:
+	case XPT_SET_TRAN_SETTINGS:
 	case XPT_PATH_INQ:
-	{
-		struct cam_sim *sim;
-
+call_sim:
 		sim = path->bus->sim;
 		(*(sim->sim_action))(sim, start_ccb);
 		break;
-	}
 	case XPT_PATH_STATS:
 		start_ccb->cpis.last_reset = path->bus->last_reset;
 		start_ccb->ccb_h.status = CAM_REQ_CMP;

Modified: projects/camlock/sys/cam/scsi/scsi_xpt.c
==============================================================================
--- projects/camlock/sys/cam/scsi/scsi_xpt.c	Sun Aug 11 06:57:57 2013	(r254207)
+++ projects/camlock/sys/cam/scsi/scsi_xpt.c	Sun Aug 11 07:00:43 2013	(r254208)
@@ -2525,14 +2525,6 @@ scsi_action(union ccb *start_ccb)
 			      start_ccb->ccb_h.path, start_ccb->crcn.flags,
 			      start_ccb);
 		break;
-	case XPT_GET_TRAN_SETTINGS:
-	{
-		struct cam_sim *sim;
-
-		sim = start_ccb->ccb_h.path->bus->sim;
-		(*(sim->sim_action))(sim, start_ccb);
-		break;
-	}
 	case XPT_DEV_ADVINFO:
 	{
 		scsi_dev_advinfo(start_ccb);
@@ -2620,7 +2612,7 @@ scsi_set_transfer_settings(struct ccb_tr
 	 */
 	if (cts->protocol != PROTO_SCSI) {
 		if (async_update == FALSE)
-			(*(sim->sim_action))(sim, (union ccb *)cts);
+			xpt_action_default((union ccb *)cts);
 		return;
 	}
 
@@ -2810,7 +2802,7 @@ scsi_set_transfer_settings(struct ccb_tr
 		}
 	}
 	if (async_update == FALSE)
-		(*(sim->sim_action))(sim, (union ccb *)cts);
+		xpt_action_default((union ccb *)cts);
 }
 
 static void



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308110700.r7B70hnJ008393>