svn commit: r288427 - head/sys/cam/ctl

Alexander Motin mav at FreeBSD.org
Wed Sep 30 20:38:37 UTC 2015


Author: mav
Date: Wed Sep 30 20:38:35 2015
New Revision: 288427
URL: https://svnweb.freebsd.org/changeset/base/288427

Log:
  Use proper STAILQ_* macros where possible.

Modified:
  head/sys/cam/ctl/ctl.c
  head/sys/cam/ctl/ctl_backend_ramdisk.c

Modified: head/sys/cam/ctl/ctl.c
==============================================================================
--- head/sys/cam/ctl/ctl.c	Wed Sep 30 20:14:34 2015	(r288426)
+++ head/sys/cam/ctl/ctl.c	Wed Sep 30 20:38:35 2015	(r288427)
@@ -1922,13 +1922,8 @@ ctl_shutdown(void)
 
 	mtx_lock(&softc->ctl_lock);
 
-	/*
-	 * Free up each LUN.
-	 */
-	for (lun = STAILQ_FIRST(&softc->lun_list); lun != NULL; lun = next_lun){
-		next_lun = STAILQ_NEXT(lun, links);
+	STAILQ_FOREACH_SAFE(lun, &softc->lun_list, links, next_lun)
 		ctl_free_lun(lun);
-	}
 
 	mtx_unlock(&softc->ctl_lock);
 
@@ -2780,9 +2775,9 @@ ctl_ioctl(struct cdev *dev, u_long cmd, 
 		 * XXX KDM no locking here.  If the LUN list changes,
 		 * things can blow up.
 		 */
-		for (i = 0, lun = STAILQ_FIRST(&softc->lun_list); lun != NULL;
-		     i++, lun = STAILQ_NEXT(lun, links)) {
-			retval = copyout(&lun->stats, &stats->lun_stats[i],
+		i = 0;
+		STAILQ_FOREACH(lun, &softc->lun_list, links) {
+			retval = copyout(&lun->stats, &stats->lun_stats[i++],
 					 sizeof(lun->stats));
 			if (retval != 0)
 				break;
@@ -4637,8 +4632,7 @@ ctl_enable_lun(struct ctl_be_lun *be_lun
 	lun->flags &= ~CTL_LUN_DISABLED;
 	mtx_unlock(&lun->lun_lock);
 
-	for (port = STAILQ_FIRST(&softc->port_list); port != NULL; port = nport) {
-		nport = STAILQ_NEXT(port, links);
+	STAILQ_FOREACH_SAFE(port, &softc->port_list, links, nport) {
 		if ((port->status & CTL_PORT_STATUS_ONLINE) == 0 ||
 		    port->lun_map != NULL || port->lun_enable == NULL)
 			continue;
@@ -13130,7 +13124,7 @@ ctl_process_done(union ctl_io *io)
 	 * Check to see if we have any errors to inject here.  We only
 	 * inject errors for commands that don't already have errors set.
 	 */
-	if ((STAILQ_FIRST(&lun->error_list) != NULL) &&
+	if (!STAILQ_EMPTY(&lun->error_list) &&
 	    ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SUCCESS) &&
 	    ((io->io_hdr.flags & CTL_FLAG_STATUS_SENT) == 0))
 		ctl_inject_error(lun, io);

Modified: head/sys/cam/ctl/ctl_backend_ramdisk.c
==============================================================================
--- head/sys/cam/ctl/ctl_backend_ramdisk.c	Wed Sep 30 20:14:34 2015	(r288426)
+++ head/sys/cam/ctl/ctl_backend_ramdisk.c	Wed Sep 30 20:38:35 2015	(r288427)
@@ -180,14 +180,7 @@ ctl_backend_ramdisk_shutdown(void)
 #endif
 
 	mtx_lock(&softc->lock);
-	for (lun = STAILQ_FIRST(&softc->lun_list); lun != NULL; lun = next_lun){
-		/*
-		 * Grab the next LUN.  The current LUN may get removed by
-		 * ctl_invalidate_lun(), which will call our LUN shutdown
-		 * routine, if there is no outstanding I/O for this LUN.
-		 */
-		next_lun = STAILQ_NEXT(lun, links);
-
+	STAILQ_FOREACH_SAFE(lun, &softc->lun_list, links, next_lun) {
 		/*
 		 * Drop our lock here.  Since ctl_invalidate_lun() can call
 		 * back into us, this could potentially lead to a recursive


More information about the svn-src-head mailing list