PERFORCE change 170437 for review
Alexander Motin
mav at FreeBSD.org
Tue Nov 10 12:40:32 UTC 2009
http://p4web.freebsd.org/chv.cgi?CH=170437
Change 170437 by mav at mav_mavbook on 2009/11/10 12:39:55
Move xpt_schedule_dev_sendq() from header to source file.
Move delayed queue shrinking to more logical place - when queue freed.
Affected files ...
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#122 edit
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#13 edit
Differences ...
==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#122 (text+ko) ====
@@ -299,12 +299,6 @@
int retval;
if (dev->ccbq.devq_openings > 0) {
- if ((dev->flags & CAM_DEV_RESIZE_QUEUE_NEEDED) != 0) {
- cam_ccbq_resize(&dev->ccbq,
- dev->ccbq.dev_openings
- + dev->ccbq.dev_active);
- dev->flags &= ~CAM_DEV_RESIZE_QUEUE_NEEDED;
- }
/*
* The priority of a device waiting for CCB resources
* is that of the the highest priority peripheral driver
@@ -321,6 +315,27 @@
}
static __inline int
+xpt_schedule_dev_sendq(struct cam_eb *bus, struct cam_ed *dev)
+{
+ int retval;
+
+ if (dev->ccbq.dev_openings > 0) {
+ /*
+ * The priority of a device waiting for controller
+ * resources is that of the the highest priority CCB
+ * enqueued.
+ */
+ retval =
+ xpt_schedule_dev(&bus->sim->devq->send_queue,
+ &dev->send_ccb_entry.pinfo,
+ CAMQ_GET_HEAD(&dev->ccbq.queue)->priority);
+ } else {
+ retval = 0;
+ }
+ return (retval);
+}
+
+static __inline int
periph_is_queued(struct cam_periph *periph)
{
return (periph->pinfo.index != CAM_UNQUEUED_INDEX);
@@ -3747,6 +3762,11 @@
mtx_assert(sim->mtx, MA_OWNED);
cam_ccbq_release_opening(&device->ccbq);
+ if (device->flags & CAM_DEV_RESIZE_QUEUE_NEEDED) {
+ device->flags &= ~CAM_DEV_RESIZE_QUEUE_NEEDED;
+ cam_ccbq_resize(&device->ccbq,
+ device->ccbq.dev_openings + device->ccbq.dev_active);
+ }
if (sim->ccb_count > sim->max_ccbs) {
xpt_free_ccb(free_ccb);
sim->ccb_count--;
==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#13 (text+ko) ====
@@ -177,29 +177,6 @@
u_int32_t new_priority);
u_int32_t xpt_dev_ccbq_resize(struct cam_path *path, int newopenings);
-
-
-static __inline int
-xpt_schedule_dev_sendq(struct cam_eb *bus, struct cam_ed *dev)
-{
- int retval;
-
- if (dev->ccbq.dev_openings > 0) {
- /*
- * The priority of a device waiting for controller
- * resources is that of the the highest priority CCB
- * enqueued.
- */
- retval =
- xpt_schedule_dev(&bus->sim->devq->send_queue,
- &dev->send_ccb_entry.pinfo,
- CAMQ_GET_HEAD(&dev->ccbq.queue)->priority);
- } else {
- retval = 0;
- }
- return (retval);
-}
-
MALLOC_DECLARE(M_CAMXPT);
#endif
More information about the p4-projects
mailing list