diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 1999-09-20 17:04:39 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 1999-09-20 17:04:39 +0000 |
| commit | 81f7c76af52833ca9cb91c476546adc006655baf (patch) | |
| tree | 7b42d04e0c7f81bc6194d5a79cca17c4c2a7bd97 | |
| parent | 624aff922773452884d4d147c7dbfd1072ccc09b (diff) | |
Notes
| -rw-r--r-- | sys/i386/isa/wd.c | 2 | ||||
| -rw-r--r-- | sys/kern/subr_diskslice.c | 10 | ||||
| -rw-r--r-- | sys/pc98/pc98/wd.c | 2 | ||||
| -rw-r--r-- | sys/sys/diskslice.h | 1 |
4 files changed, 12 insertions, 3 deletions
diff --git a/sys/i386/isa/wd.c b/sys/i386/isa/wd.c index 93a031e30c7b..9c054170d535 100644 --- a/sys/i386/isa/wd.c +++ b/sys/i386/isa/wd.c @@ -1210,7 +1210,7 @@ wdopen(dev_t dev, int flags, int fmt, struct proc *p) label.d_ncylinders = du->dk_dd.d_ncylinders; label.d_secpercyl = du->dk_dd.d_secpercyl; label.d_secperunit = du->dk_dd.d_secperunit; - error = dsopen(dev, fmt, 0, &du->dk_slices, &label); + error = dsopen(dev, fmt, DSO_BAD144, &du->dk_slices, &label); } du->dk_flags &= ~DKFL_LABELLING; wdsleep(du->dk_ctrlr, "wdopn2"); diff --git a/sys/kern/subr_diskslice.c b/sys/kern/subr_diskslice.c index 439496c0e38b..34225b86399d 100644 --- a/sys/kern/subr_diskslice.c +++ b/sys/kern/subr_diskslice.c @@ -429,6 +429,8 @@ dsioctl(dev, cmd, data, flags, sspp) return (0); case DIOCSBAD: + if ((ssp->dss_oflags & DSO_BAD144) == 0) + return (ENODEV); if (slice == WHOLE_DISK_SLICE) return (ENODEV); if (!(flags & FWRITE)) @@ -829,11 +831,17 @@ dsopen(dev, mode, flags, sspp, lp) continue; } if (lp1->d_flags & D_BADSECT) { + if ((flags & DSO_BAD144) == 0) { + log(LOG_ERR, + "%s: bad sector table no supported\n", + sname); + continue; + } btp = malloc(sizeof *btp, M_DEVBUF, M_WAITOK); TRACE(("readbad144\n")); msg = readbad144(dev1, lp1, btp); if (msg != NULL) { - log(LOG_WARNING, + log(LOG_ERR, "%s: cannot find bad sector table (%s)\n", sname, msg); free(btp, M_DEVBUF); diff --git a/sys/pc98/pc98/wd.c b/sys/pc98/pc98/wd.c index 6383b347bad9..4cfc1041e9c6 100644 --- a/sys/pc98/pc98/wd.c +++ b/sys/pc98/pc98/wd.c @@ -1336,7 +1336,7 @@ wdopen(dev_t dev, int flags, int fmt, struct proc *p) label.d_ncylinders = du->dk_dd.d_ncylinders; label.d_secpercyl = du->dk_dd.d_secpercyl; label.d_secperunit = du->dk_dd.d_secperunit; - error = dsopen(dev, fmt, 0, &du->dk_slices, &label); + error = dsopen(dev, fmt, DSO_BAD144, &du->dk_slices, &label); } du->dk_flags &= ~DKFL_LABELLING; wdsleep(du->dk_ctrlr, "wdopn2"); diff --git a/sys/sys/diskslice.h b/sys/sys/diskslice.h index ab2253d82ee9..79e3cbd2ea86 100644 --- a/sys/sys/diskslice.h +++ b/sys/sys/diskslice.h @@ -85,6 +85,7 @@ struct diskslices { /* Flags for dsopen(). */ #define DSO_NOLABELS 1 #define DSO_ONESLICE 2 +#define DSO_BAD144 4 #define dsgetbad(dev, ssp) (ssp->dss_slices[dkslice(dev)].ds_bad) #define dsgetlabel(dev, ssp) (ssp->dss_slices[dkslice(dev)].ds_label) |
