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);
 }
 
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to