svn commit: r306713 - in user/alc/PQ_LAUNDRY: lib/libc/stdlib lib/msun/ld80 lib/msun/src sys/cam sys/vm

Alan Cox alc at FreeBSD.org
Wed Oct 5 18:03:19 UTC 2016


Author: alc
Date: Wed Oct  5 18:03:17 2016
New Revision: 306713
URL: https://svnweb.freebsd.org/changeset/base/306713

Log:
  MFH r306708-306712

Modified:
  user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c
  user/alc/PQ_LAUNDRY/lib/msun/ld80/e_lgammal_r.c
  user/alc/PQ_LAUNDRY/lib/msun/src/e_lgammaf_r.c
  user/alc/PQ_LAUNDRY/sys/cam/cam_queue.c
  user/alc/PQ_LAUNDRY/sys/cam/cam_queue.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_page.c
  user/alc/PQ_LAUNDRY/sys/vm/vm_page.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)

Modified: user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/lib/libc/stdlib/random.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -270,16 +270,17 @@ void
 srandomdev(void)
 {
 	int mib[2];
-	size_t len;
+	size_t expected, len;
 
 	if (rand_type == TYPE_0)
-		len = sizeof(state[0]);
+		expected = len = sizeof(state[0]);
 	else
-		len = rand_deg * sizeof(state[0]);
+		expected = len = rand_deg * sizeof(state[0]);
 
 	mib[0] = CTL_KERN;
 	mib[1] = KERN_ARND;
-	sysctl(mib, 2, state, &len, NULL, 0);
+	if (sysctl(mib, 2, state, &len, NULL, 0) == -1 || len != expected)
+		abort();
 
 	if (rand_type != TYPE_0) {
 		fptr = &state[rand_sep];

Modified: user/alc/PQ_LAUNDRY/lib/msun/ld80/e_lgammal_r.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/msun/ld80/e_lgammal_r.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/lib/msun/ld80/e_lgammal_r.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -249,7 +249,7 @@ sin_pil(long double x)
 long double
 lgammal_r(long double x, int *signgamp)
 {
-	long double nadj,p,p1,p2,p3,q,r,t,w,y,z;
+	long double nadj,p,p1,p2,q,r,t,w,y,z;
 	uint64_t lx;
 	int i;
 	uint16_t hx,ix;

Modified: user/alc/PQ_LAUNDRY/lib/msun/src/e_lgammaf_r.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/msun/src/e_lgammaf_r.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/lib/msun/src/e_lgammaf_r.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -122,7 +122,7 @@ sin_pif(float x)
 float
 __ieee754_lgammaf_r(float x, int *signgamp)
 {
-	float nadj,p,p1,p2,p3,q,r,t,w,y,z;
+	float nadj,p,p1,p2,q,r,t,w,y,z;
 	int32_t hx;
 	int i,ix;
 

Modified: user/alc/PQ_LAUNDRY/sys/cam/cam_queue.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/cam/cam_queue.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/cam/cam_queue.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -176,8 +176,11 @@ camq_remove(struct camq *queue, int inde
 {
 	cam_pinfo *removed_entry;
 
-	if (index == 0 || index > queue->entries)
-		return (NULL);
+	if (index <= 0 || index > queue->entries)
+		panic("%s: Attempt to remove out-of-bounds index %d "
+		    "from queue %p of size %d", __func__, index, queue,
+		    queue->entries);
+
 	removed_entry = queue->queue_array[index];
 	if (queue->entries != index) {
 		queue->queue_array[index] = queue->queue_array[queue->entries];

Modified: user/alc/PQ_LAUNDRY/sys/cam/cam_queue.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/cam/cam_queue.h	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/cam/cam_queue.h	Wed Oct  5 18:03:17 2016	(r306713)
@@ -197,6 +197,11 @@ cam_ccbq_insert_ccb(struct cam_ccbq *ccb
 	struct ccb_hdr *old_ccb;
 	struct camq *queue = &ccbq->queue;
 
+	KASSERT((new_ccb->ccb_h.func_code & XPT_FC_QUEUED) != 0 &&
+	    (new_ccb->ccb_h.func_code & XPT_FC_USER_CCB) == 0,
+	    ("%s: Cannot queue ccb %p func_code %#x", __func__, new_ccb,
+	     new_ccb->ccb_h.func_code));
+
 	/*
 	 * If queue is already full, try to resize.
 	 * If resize fail, push CCB with lowest priority out to the TAILQ.
@@ -218,6 +223,7 @@ cam_ccbq_remove_ccb(struct cam_ccbq *ccb
 {
 	struct ccb_hdr *cccb, *bccb;
 	struct camq *queue = &ccbq->queue;
+	cam_pinfo *removed_entry __unused;
 
 	/* If the CCB is on the TAILQ, remove it from there. */
 	if (ccb->ccb_h.pinfo.index == CAM_EXTRAQ_INDEX) {
@@ -228,7 +234,10 @@ cam_ccbq_remove_ccb(struct cam_ccbq *ccb
 		return;
 	}
 
-	camq_remove(queue, ccb->ccb_h.pinfo.index);
+	removed_entry = camq_remove(queue, ccb->ccb_h.pinfo.index);
+	KASSERT(removed_entry == &ccb->ccb_h.pinfo,
+	    ("%s: Removed wrong entry from queue (%p != %p)", __func__,
+	     removed_entry, &ccb->ccb_h.pinfo));
 
 	/*
 	 * If there are some CCBs on TAILQ, find the best one and move it

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_page.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -398,7 +398,6 @@ vm_page_domain_init(struct vm_domain *vm
 	vmd->vmd_free_count = 0;
 	vmd->vmd_segs = 0;
 	vmd->vmd_oom = FALSE;
-	vmd->vmd_pass = 0;
 	for (i = 0; i < PQ_COUNT; i++) {
 		pq = &vmd->vmd_pagequeues[i];
 		TAILQ_INIT(&pq->pq_pl);
@@ -3829,14 +3828,13 @@ DB_SHOW_COMMAND(pageq, vm_page_print_pag
 	    vm_cnt.v_free_count, vm_cnt.v_cache_count);
 	for (dom = 0; dom < vm_ndomains; dom++) {
 		db_printf(
-	"dom %d page_cnt %d free %d pq_act %d pq_inact %d pq_laund %d pass %d\n",
+	    "dom %d page_cnt %d free %d pq_act %d pq_inact %d pq_laund %d\n",
 		    dom,
 		    vm_dom[dom].vmd_page_count,
 		    vm_dom[dom].vmd_free_count,
 		    vm_dom[dom].vmd_pagequeues[PQ_ACTIVE].pq_cnt,
 		    vm_dom[dom].vmd_pagequeues[PQ_INACTIVE].pq_cnt,
-		    vm_dom[dom].vmd_pagequeues[PQ_LAUNDRY].pq_cnt,
-		    vm_dom[dom].vmd_pass);
+		    vm_dom[dom].vmd_pagequeues[PQ_LAUNDRY].pq_cnt);
 	}
 }
 

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_page.h	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.h	Wed Oct  5 18:03:17 2016	(r306713)
@@ -227,7 +227,6 @@ struct vm_domain {
 	u_int vmd_free_count;
 	long vmd_segs;	/* bitmask of the segments */
 	boolean_t vmd_oom;
-	int vmd_pass;	/* local pagedaemon pass */
 	int vmd_oom_seq;
 	int vmd_last_active_scan;
 	struct vm_page vmd_laundry_marker;

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Wed Oct  5 17:32:06 2016	(r306712)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Wed Oct  5 18:03:17 2016	(r306713)
@@ -1893,11 +1893,12 @@ static void
 vm_pageout_worker(void *arg)
 {
 	struct vm_domain *domain;
-	int domidx;
+	int domidx, pass;
 	bool target_met;
 
 	domidx = (uintptr_t)arg;
 	domain = &vm_dom[domidx];
+	pass = 0;
 	target_met = true;
 
 	/*
@@ -1959,9 +1960,9 @@ vm_pageout_worker(void *arg)
 			 * and try again later.
 			 */
 			mtx_unlock(&vm_page_queue_free_mtx);
-			if (domain->vmd_pass > 1)
+			if (pass > 1)
 				pause("psleep", hz / 2);
-			domain->vmd_pass++;
+			pass++;
 		} else {
 			/*
 			 * Yes.  Sleep until pages need to be reclaimed or
@@ -1971,12 +1972,12 @@ vm_pageout_worker(void *arg)
 			    &vm_page_queue_free_mtx, PDROP | PVM, "psleep",
 			    hz) == 0) {
 				PCPU_INC(cnt.v_pdwakeups);
-				domain->vmd_pass = 1;
+				pass = 1;
 			} else
-				domain->vmd_pass = 0;
+				pass = 0;
 		}
 
-		target_met = vm_pageout_scan(domain, domain->vmd_pass);
+		target_met = vm_pageout_scan(domain, pass);
 	}
 }
 


More information about the svn-src-user mailing list