added my responsibility for the `cpm' port
[unix-history] / sys / i386 / isa / wd.c
index b8cf448..5d9bf91 100644 (file)
@@ -37,7 +37,7 @@ static int wdtest = 0;
  * SUCH DAMAGE.
  *
  *     from: @(#)wd.c  7.2 (Berkeley) 5/9/91
  * SUCH DAMAGE.
  *
  *     from: @(#)wd.c  7.2 (Berkeley) 5/9/91
- *     $Id: wd.c,v 1.37 1994/04/10 11:17:13 csgr Exp $
+ *     $Id: wd.c,v 1.39 1994/06/07 01:36:39 phk Exp $
  */
 
 /* TODO:
  */
 
 /* TODO:
@@ -358,13 +358,14 @@ wdstrategy(register struct buf *bp)
                goto done;
        }
 
                goto done;
        }
 
+#if !defined(DISKLABEL_UNPROTECTED)
        /* "soft" write protect check */
        if ((du->dk_flags & DKFL_WRITEPROT) && (bp->b_flags & B_READ) == 0) {
                bp->b_error = EROFS;
                bp->b_flags |= B_ERROR;
                goto done;
        }
        /* "soft" write protect check */
        if ((du->dk_flags & DKFL_WRITEPROT) && (bp->b_flags & B_READ) == 0) {
                bp->b_error = EROFS;
                bp->b_flags |= B_ERROR;
                goto done;
        }
-
+#endif /* !defined(DISKLABEL_UNPROTECTED) */
        /*
         * Do bounds checking, adjust transfer, and set b_cylin.
         */
        /*
         * Do bounds checking, adjust transfer, and set b_cylin.
         */
@@ -1277,8 +1278,10 @@ wdioctl(dev_t dev, int cmd, caddr_t addr, int flag)
        case DIOCSBAD:
                if ((flag & FWRITE) == 0)
                        error = EBADF;
        case DIOCSBAD:
                if ((flag & FWRITE) == 0)
                        error = EBADF;
-               else
+               else {
                        du->dk_bad = *(struct dkbad *)addr;
                        du->dk_bad = *(struct dkbad *)addr;
+                       bad144intern(du);
+               }
                break;
 
        case DIOCGDINFO:
                break;
 
        case DIOCGDINFO: