+ waitdry = 0;
+ while ((rkaddr->rkds&RK_SVAL) == 0) {
+ if (++waitdry > 32)
+ break;
+ rkwaitdry++;
+ }
+ if ((rkaddr->rkds&RK_DREADY) != RK_DREADY) {
+ printf("rk%d: not ready", dkunit(bp));
+ if ((rkaddr->rkds&RK_DREADY) != RK_DREADY) {
+ printf("\n");
+ rkaddr->rkcs1 = RK_CDT|RK_DCLR|RK_GO;
+ rkwait(rkaddr);
+ rkaddr->rkcs1 = RK_CDT|RK_CERR;
+ rkwait(rkaddr);
+ um->um_tab.b_active = 0;
+ um->um_tab.b_errcnt = 0;
+ dp->b_actf = bp->av_forw;
+ dp->b_active = 0;
+ bp->b_flags |= B_ERROR;
+ iodone(bp);
+ goto loop;
+ }
+ printf(" (came back!)\n");
+ }