Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Mar 2016 06:25:47 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r296607 - head/sys/mips/cavium
Message-ID:  <201603100625.u2A6PljY034399@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Thu Mar 10 06:25:47 2016
New Revision: 296607
URL: https://svnweb.freebsd.org/changeset/base/296607

Log:
  Don't assume that bio_cmd is a bitfield.
  
  Differential Revision: https://reviews.freebsd.org/D5591

Modified:
  head/sys/mips/cavium/octeon_ebt3000_cf.c

Modified: head/sys/mips/cavium/octeon_ebt3000_cf.c
==============================================================================
--- head/sys/mips/cavium/octeon_ebt3000_cf.c	Thu Mar 10 06:25:39 2016	(r296606)
+++ head/sys/mips/cavium/octeon_ebt3000_cf.c	Thu Mar 10 06:25:47 2016	(r296607)
@@ -215,37 +215,38 @@ static void cf_start (struct bio *bp)
 	* the bio struct.
 	*/
 
-	if(bp->bio_cmd & BIO_GETATTR) {
+	switch (bp->bio_cmd) {
+	case BIO_GETATTR:
 		if (g_handleattr_int(bp, "GEOM::fwsectors", cf_priv->drive_param.sec_track))
                         return;
                 if (g_handleattr_int(bp, "GEOM::fwheads", cf_priv->drive_param.heads))
                         return;
                 g_io_deliver(bp, ENOIOCTL);
                 return;
-	}
-
-	if ((bp->bio_cmd & (BIO_READ | BIO_WRITE))) {
 
-		if (bp->bio_cmd & BIO_READ) {
-			error = cf_cmd_read(bp->bio_length / cf_priv->drive_param.sector_size,
-			    bp->bio_offset / cf_priv->drive_param.sector_size, bp->bio_data);
-		} else if (bp->bio_cmd & BIO_WRITE) {
-			error = cf_cmd_write(bp->bio_length / cf_priv->drive_param.sector_size,
-			    bp->bio_offset/cf_priv->drive_param.sector_size, bp->bio_data);
-		} else {
-			printf("%s: unrecognized bio_cmd %x.\n", __func__, bp->bio_cmd);
-			error = ENOTSUP;
-		}
+	case BIO_READ:
+		error = cf_cmd_read(bp->bio_length / cf_priv->drive_param.sector_size,
+		    bp->bio_offset / cf_priv->drive_param.sector_size, bp->bio_data);
+		break;
+	case BIO_WRITE:
+		error = cf_cmd_write(bp->bio_length / cf_priv->drive_param.sector_size,
+		    bp->bio_offset/cf_priv->drive_param.sector_size, bp->bio_data);
+		break;
 
-		if (error != 0) {
-			g_io_deliver(bp, error);
-			return;
-		}
+	default:
+		printf("%s: unrecognized bio_cmd %x.\n", __func__, bp->bio_cmd);
+		error = ENOTSUP;
+		break;
+	}
 
-		bp->bio_resid = 0;
-		bp->bio_completed = bp->bio_length;
-		g_io_deliver(bp, 0);
+	if (error != 0) {
+		g_io_deliver(bp, error);
+		return;
 	}
+
+	bp->bio_resid = 0;
+	bp->bio_completed = bp->bio_length;
+	g_io_deliver(bp, 0);
 }
 
 



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