Browse Source

Plan 9 from Bell Labs 2007-11-11

David du Colombier 16 years ago
parent
commit
17a75457e0
5 changed files with 16 additions and 13 deletions
  1. 2 2
      dist/replica/_plan9.db
  2. 2 2
      dist/replica/plan9.db
  3. 2 0
      dist/replica/plan9.log
  4. 9 7
      sys/src/9/port/devaoe.c
  5. 1 2
      sys/src/9/port/sdaoe.c

+ 2 - 2
dist/replica/_plan9.db

@@ -8205,7 +8205,7 @@ sys/src/9/port/chan.c - 664 sys sys 1146151714 34773
 sys/src/9/port/cis.c - 664 sys sys 1099761153 9248
 sys/src/9/port/debugalloc.c - 664 sys sys 1014931171 10402
 sys/src/9/port/dev.c - 664 sys sys 1146151714 8177
-sys/src/9/port/devaoe.c - 664 sys sys 1192044589 42018
+sys/src/9/port/devaoe.c - 664 sys sys 1194752565 41987
 sys/src/9/port/devaudio.c - 664 sys sys 1170456648 21199
 sys/src/9/port/devbridge.c - 664 sys sys 1187735844 24076
 sys/src/9/port/devcap.c - 664 sys sys 1178886040 4141
@@ -8272,7 +8272,7 @@ sys/src/9/port/qlock.c - 664 sys sys 1178057654 3300
 sys/src/9/port/rdb.c - 664 sys sys 1184465938 1704
 sys/src/9/port/rebootcmd.c - 664 sys sys 1015278340 1561
 sys/src/9/port/sd.h - 664 sys sys 1186618553 2499
-sys/src/9/port/sdaoe.c - 664 sys sys 1187034227 9934
+sys/src/9/port/sdaoe.c - 664 sys sys 1194752512 9922
 sys/src/9/port/segment.c - 664 sys sys 1170456581 14052
 sys/src/9/port/semaphore.p - 664 sys sys 1143129797 2424
 sys/src/9/port/swap.c - 664 sys sys 1138028310 7019

+ 2 - 2
dist/replica/plan9.db

@@ -8205,7 +8205,7 @@ sys/src/9/port/chan.c - 664 sys sys 1146151714 34773
 sys/src/9/port/cis.c - 664 sys sys 1099761153 9248
 sys/src/9/port/debugalloc.c - 664 sys sys 1014931171 10402
 sys/src/9/port/dev.c - 664 sys sys 1146151714 8177
-sys/src/9/port/devaoe.c - 664 sys sys 1192044589 42018
+sys/src/9/port/devaoe.c - 664 sys sys 1194752565 41987
 sys/src/9/port/devaudio.c - 664 sys sys 1170456648 21199
 sys/src/9/port/devbridge.c - 664 sys sys 1187735844 24076
 sys/src/9/port/devcap.c - 664 sys sys 1178886040 4141
@@ -8272,7 +8272,7 @@ sys/src/9/port/qlock.c - 664 sys sys 1178057654 3300
 sys/src/9/port/rdb.c - 664 sys sys 1184465938 1704
 sys/src/9/port/rebootcmd.c - 664 sys sys 1015278340 1561
 sys/src/9/port/sd.h - 664 sys sys 1186618553 2499
-sys/src/9/port/sdaoe.c - 664 sys sys 1187034227 9934
+sys/src/9/port/sdaoe.c - 664 sys sys 1194752512 9922
 sys/src/9/port/segment.c - 664 sys sys 1170456581 14052
 sys/src/9/port/semaphore.p - 664 sys sys 1143129797 2424
 sys/src/9/port/swap.c - 664 sys sys 1138028310 7019

+ 2 - 0
dist/replica/plan9.log

@@ -53348,3 +53348,5 @@
 1194658204 3 c 386/9loadlitedebug - 775 sys sys 1194656629 237051
 1194658204 4 c 386/9pxeload - 775 sys sys 1194656635 337592
 1194658204 5 d sys/src/9/pc/etherrhine.c - 664 sys sys 1081706478 0
+1194753604 0 c sys/src/9/port/devaoe.c - 664 sys sys 1194752565 41987
+1194753604 1 c sys/src/9/port/sdaoe.c - 664 sys sys 1194752512 9922

+ 9 - 7
sys/src/9/port/devaoe.c

@@ -470,6 +470,8 @@ pickdevlink(Aoedev *d)
 static int
 pickea(Devlink *l)
 {
+	if(l == 0)
+		return -1;
 	if(l->nea == 0)
 		return -1;
 	return l->eaidx++ % l->nea;
@@ -483,10 +485,8 @@ hset(Aoedev *d, Frame *f, Aoehdr *h, int cmd)
 
 	l = pickdevlink(d);
 	i = pickea(l);
-	if(l == 0 || i == -1 /* || (d->flag&Dup) == 0 */ ){
-		eventlog("%æ: resend fails. no netlink/no ea\n", d);
-		d->flag &= ~Dup;
-		frameerror(d, f, Enotup);
+	if(i == -1){
+		downdev(d, "resend fails; no netlink/ea");
 		return -1;
 	}
 	if(f->srb && Ticks-f->srb->ticksent > Srbtimeout){
@@ -530,7 +530,10 @@ resend(Aoedev *d, Frame *f)
 	a->scnt = n / Aoesectsz;
 	f->dl->resent++;
 	f->dl->npkt++;
+	if(waserror())
+		return -1;
 	devtab[f->nl->dc->type]->bwrite(f->nl->dc, allocfb(f), 0);
+	poperror();
 	return 0;
 }
 
@@ -1272,8 +1275,6 @@ devlinkread(Chan *c, void *db, int len, int off)
 	Devlink *l;
 
 	d = unit2dev(UNIT(c->qid));
-	if(d->vers != c->qid.vers)
-		error(Echange);
 	i = L(c->qid);
 	if(i >= d->ndl)
 		return 0;
@@ -1901,7 +1902,7 @@ qcfgrsp(Block *b, Netlink *nl)
 
 	cmd = ch->verccmd & 0xf;
 	if(cmd != 0){
-		eventlog("cfgrsp: bad command %d", cmd);
+		eventlog("aoe%d.%d: cfgrsp: bad command %d\n", major, ch->minor, cmd);
 		return;
 	}
 	n = nhgets(ch->bufcnt);
@@ -1919,6 +1920,7 @@ qcfgrsp(Block *b, Netlink *nl)
 	if(waserror()){
 		qunlock(d);
 		eventlog("%æ: %s\n", d, up->errstr);
+		nexterror();
 	}
 
 	l = newdevlink(d, nl, ch);		/* add this interface. */

+ 1 - 2
sys/src/9/port/sdaoe.c

@@ -178,8 +178,7 @@ aoeidentify(Ctlr *d, SDunit *u)
 		if(c)
 			cclose(c);
 		iprint("aoeidentify: %s\n", up->errstr);
-		qunlock(d);
-		return -1;
+		nexterror();
 	}
 
 	uprint("%s/ident", d->path);