SCCS-vsn: sys/vax/vax/dkbad.c 4.3
SCCS-vsn: sys/vax/mba/hp.c 4.38
SCCS-vsn: sys/vax/uba/rk.c 4.35
-/* hp.c 4.37 81/05/09 */
+/* hp.c 4.38 81/05/10 */
#ifdef HPDEBUG
int hpdebug;
#ifdef HPDEBUG
int hpdebug;
291302, 118, /* G=cyl 118 thru 814 */
#else
291346, 118,
291302, 118, /* G=cyl 118 thru 814 */
#else
291346, 118,
82016, 310, /* G=cyl 310 thru 822 */
#else
82080, 310,
82016, 310, /* G=cyl 310 thru 822 */
#else
82080, 310,
500384, 0, /* C=cyl 0 thru 822 */
15884, 562, /* D=cyl 562 thru 588 */
55936, 589, /* E=cyl 589 thru 680 */
500384, 0, /* C=cyl 0 thru 822 */
15884, 562, /* D=cyl 562 thru 588 */
55936, 589, /* E=cyl 589 thru 680 */
86572, 681, /* F=cyl 681 thru 822 */
158624, 562, /* G=cyl 562 thru 822 */
#else
86572, 681, /* F=cyl 681 thru 822 */
158624, 562, /* G=cyl 562 thru 822 */
#else
};
struct buf rhpbuf[NHP];
};
struct buf rhpbuf[NHP];
struct buf bhpbuf[NHP];
struct dkbad hpbad[NHP];
#endif
struct buf bhpbuf[NHP];
struct dkbad hpbad[NHP];
#endif
if ((hpaddr->hpcs1&HP_DVA) == 0)
return (MBU_BUSY);
if ((hpaddr->hpds & HPDS_VV) == 0 || hpinit[mi->mi_unit] == 0) {
if ((hpaddr->hpcs1&HP_DVA) == 0)
return (MBU_BUSY);
if ((hpaddr->hpds & HPDS_VV) == 0 || hpinit[mi->mi_unit] == 0) {
struct buf *bbp = &bhpbuf[mi->mi_unit];
#endif
struct buf *bbp = &bhpbuf[mi->mi_unit];
#endif
hpaddr->hpcs1 = HP_PRESET|HP_GO;
hpaddr->hpof = HPOF_FMT22;
mbclrattn(mi);
hpaddr->hpcs1 = HP_PRESET|HP_GO;
hpaddr->hpof = HPOF_FMT22;
mbclrattn(mi);
bbp->b_flags = B_READ|B_BUSY;
bbp->b_dev = bp->b_dev;
bbp->b_bcount = 512;
bbp->b_flags = B_READ|B_BUSY;
bbp->b_dev = bp->b_dev;
bbp->b_bcount = 512;
register struct buf *bp = mi->mi_tab.b_actf;
int retry = 0;
register struct buf *bp = mi->mi_tab.b_actf;
int retry = 0;
if (bp->b_flags&B_BAD) {
if (hpecc(mi, CONT))
return(MBD_RESTARTED);
if (bp->b_flags&B_BAD) {
if (hpecc(mi, CONT))
return(MBD_RESTARTED);
bp->b_flags |= B_ERROR;
hprecal[mi->mi_unit] = 0;
} else if (hpaddr->hper2 & HPER2_BSE) {
bp->b_flags |= B_ERROR;
hprecal[mi->mi_unit] = 0;
} else if (hpaddr->hper2 & HPER2_BSE) {
if (hpecc(mi, BSE))
return(MBD_RESTARTED);
else
if (hpecc(mi, BSE))
return(MBD_RESTARTED);
else
bcr = mbp->mba_bcr & 0xffff;
if (bcr)
bcr |= 0xffff0000; /* sxt */
bcr = mbp->mba_bcr & 0xffff;
if (bcr)
bcr |= 0xffff0000; /* sxt */
if (flag == CONT)
npf = bp->b_error;
else
if (flag == CONT)
npf = bp->b_error;
else
mbp->mba_bcr = -(bp->b_bcount - (int)ptob(npf));
break;
mbp->mba_bcr = -(bp->b_bcount - (int)ptob(npf));
break;
case BSE:
#ifdef HPBDEBUG
if (hpbdebug)
case BSE:
#ifdef HPBDEBUG
if (hpbdebug)
-/* rk.c 4.34 81/05/09 */
+/* rk.c 4.35 81/05/10 */
#include "rk.h"
#if NHK > 0
#include "rk.h"
#if NHK > 0
{ rkprobe, rkslave, rkattach, rkdgo, rkstd, "rk", rkdinfo, "hk", rkminfo, 1 };
struct buf rkutab[NRK];
short rkcyl[NRK];
{ rkprobe, rkslave, rkattach, rkdgo, rkstd, "rk", rkdinfo, "hk", rkminfo, 1 };
struct buf rkutab[NRK];
short rkcyl[NRK];
struct dkbad rkbad[NRK];
struct buf brkbuf[NRK];
#endif
struct dkbad rkbad[NRK];
struct buf brkbuf[NRK];
#endif
}
if ((rkaddr->rkds & RKDS_VV) == 0 || ui->ui_flags == 0) {
/* SHOULD WARN SYSTEM THAT THIS HAPPENED */
}
if ((rkaddr->rkds & RKDS_VV) == 0 || ui->ui_flags == 0) {
/* SHOULD WARN SYSTEM THAT THIS HAPPENED */
struct rkst *st = &rkst[ui->ui_type];
struct buf *bbp = &brkbuf[ui->ui_unit];
#endif
rkaddr->rkcs1 = rktypes[ui->ui_type]|RK_PACK|RK_GO;
ui->ui_flags = 1;
struct rkst *st = &rkst[ui->ui_type];
struct buf *bbp = &brkbuf[ui->ui_unit];
#endif
rkaddr->rkcs1 = rktypes[ui->ui_type]|RK_PACK|RK_GO;
ui->ui_flags = 1;
bbp->b_flags = B_READ|B_BUSY;
bbp->b_dev = bp->b_dev;
bbp->b_bcount = 512;
bbp->b_flags = B_READ|B_BUSY;
bbp->b_dev = bp->b_dev;
bbp->b_bcount = 512;
bp = dp->b_actf;
ui = rkdinfo[dkunit(bp)];
dk_busy &= ~(1 << ui->ui_dk);
bp = dp->b_actf;
ui = rkdinfo[dkunit(bp)];
dk_busy &= ~(1 << ui->ui_dk);
if (bp->b_flags&B_BAD)
if (rkecc(ui, CONT))
return;
if (bp->b_flags&B_BAD)
if (rkecc(ui, CONT))
return;
bp->b_flags |= B_ERROR;
sc->sc_recal = 0;
} else if (er & RKER_BSE) {
bp->b_flags |= B_ERROR;
sc->sc_recal = 0;
} else if (er & RKER_BSE) {
if (rkecc(ui, BSE))
return;
else
if (rkecc(ui, BSE))
return;
else
int reg, npf, o, cmd, ubaddr;
int bn, cn, tn, sn;
int reg, npf, o, cmd, ubaddr;
int bn, cn, tn, sn;
if (flag == CONT)
npf = bp->b_error;
else
if (flag == CONT)
npf = bp->b_error;
else
case BSE:
#ifdef RKBDEBUG
if (rkbdebug)
case BSE:
#ifdef RKBDEBUG
if (rkbdebug)
-/* dkbad.c 4.2 81/05/09 */
+/* dkbad.c 4.3 81/05/10 */
#include "../h/param.h"
#include "../h/buf.h"
#include "../h/dkbad.h"
/*
#include "../h/param.h"
#include "../h/buf.h"
#include "../h/dkbad.h"
/*
- * Search the bad block table looking for
- * the specified block. Return index if found.
+ * Search the bad sector table looking for
+ * the specified sector. Return index if found.
* Return -1 if not found.
*/
* Return -1 if not found.
*/
register int i;
register long blk, bblk;
register int i;
register long blk, bblk;
-#ifdef BADMAGIC
- if (bt->bt_magic != BADMAGIC)
- return (-1);
-#endif
blk = ((long)cyl << 16) + (trk << 8) + sec;
for (i = 0; i < 126; i++) {
bblk = ((long)bt->bt_bad[i].bt_cyl << 16) + bt->bt_bad[i].bt_trksec;
blk = ((long)cyl << 16) + (trk << 8) + sec;
for (i = 0; i < 126; i++) {
bblk = ((long)bt->bt_bad[i].bt_cyl << 16) + bt->bt_bad[i].bt_trksec;