From: ry53@rz.uni-karlsruhe.de (Angela Schmidt)
Subject: Nonbinding und multiple Assigns (WAS: Re: Probleme mit parnet)
Reply-To: Angela@rz.uni-karlsruhe.de
Organization: Nessyhoehle@I501.NessyNet.de	
Date: Fri, 21 Aug 1992 11:29:24 GMT

In article <5AVwr*kT1@germal.bs.open.de>, gm@germal.bs.open.de (Gerald Malitz) writes:
|> In article <1992Aug13.123023.5564@rz.uni-karlsruhe.de>, Angela Schmidt writes:
|> > Das funktioniert auch wunderbar und ist noch
|> > akzeptabel schnell, aber sowie der A1000 softwaremaessig das Zeitliche
|> > segnet, sind die Locks vom A500 nach NET:DH0 ungueltig - auch nachdem
|> > der A1000 wiederbelebt wurde.
|> 
|> 	Eigentlich verstaendlich, die zugehoerigen Locks auf dem A1000
|> sind ja weg.  Das wird auch schwierig zu umgehen sein (besonders bei
|> RAM: ;^) ).

Ja, aber wozu haben wir denn Nonbinding Assigns? (Sorry, in meinem
letzten Posting ueber parnet hatte ich genau diese gemeint, aber 
Assign DEFER geschrieben *schaem*)

Klar, in OS2.04 geht es nicht anders - das wird auch verstaendlich,
wenn man sich dos/dosextens.h ansieht. In dem Fall merkt man aber
auch, dass es sehr wohl moeglich gewesen waere, Nonbinding-Assigns
so zu implementieren, dass folgendes Beispiel das gewuenschte
Ergebnis liefern wuerde:

  Fuer Non-Parnet-Leute                   Fuer Parnet-Leute
  Assign PDF1: DF1: PATH   - oder auch -  Assign PDF1: NET:DH0/C PATH
  Assign DDF1: DF1: DEFER  - oder auch -  Assign DDP1: NET:DH0/C DEFER

Wuenschenswert waere, dass ein
  Assign C: PDF1: ADD
    oder ein
  Path PDF1: ADD
den unaufgeloesten Assign in die entsprechende Liste mitaufnimmt, so
dass also immer die aktuelle Volume aus PDF1: in der Assign- bzw.
Path-Liste ist. Leider wird einfach nur der aufgeloeste Lock in die
jeweilige Liste eingehaengt.

Bei DDF1: faende ich das ja auch richtig - schliesslich _soll_ der
Assign da ja beim ersten Ansprechen aufgeloest werden, aber bei
PDF1: waere es doch sehr wuenschenswert, wenn der Assign jedesmal
neu aufgeloest wuerde.

Die Ursache fuer dieses unglueckliche Verhalten bei Assign ADD (oder 
Path ADD) liegt in dos/dosextens.h begraben. Dort gibt es naemlich
in DosList->dos_assign eine struct AssignList *dos_List, die die
multiple Assigns aufnehmen soll. Diese AssignList ist jedoch eine
einfach verknuepfte Liste, die ausschliesslich Locks beherbergen
kann. Logisch, dass bei jedem Assign ADD ein Lock geholt wird, der
dann in die AssignList eingetragen wird. Pathes sind ganz aehnlich 
aufgebaut.

Abhilfe koennte man (man==Commo==Randell) bei den Assigns durch
eine etwas andere Struktur schaffen, die auch Zeiger auf DosList
Eintraege zulaesst. In einer spaeteren Kickstart-Version koennte
man zum Bleistift ein weiteres Feld in DosList->dol_assign 
einrichten, das eine Liste mit Zeigern auf verschiedene
DosList-Eintraege enthaelt. So wuerde man auch nicht mit
2.0-Programmen kollidieren, die die AssignList auslesen.

Fuer die Path-Liste sollte man sich etwas Aehnliches einfallen
lassen.

Aber wahrscheinlich werden wir ewig auf solch eine Loesung
warten muessen. Fuer Parnet waere es nur _extrem_ praktisch,
da dann der Server _wirklich_ zwischendurch ausfallen koennte,
ohne dass der Client danach erst einmal seine Assigns (und Pathes)
neu ordnen muss, was ich momentan durch einen Reset erledige...

Wenn wir schon dabei sind: Mein Lieblings-Directory-Lister versagt
beim Listen von PDF1: seinen Dienst, bei DDF1: jedoch arbeitet
er anstandslos. Das liegt daran, dass DeviceProc() weder einen
Handler-Prozess noch einen Lock (in IoErr()) fuer PDF1:
zurueckgibt. Nur so zur Info fuer Leute, die 1.3-kompatible
Programme schreiben und DeviceProc() benutzen...


|> 	Ich will eigentlich nur auf die jeweils andere Platte(n) zugreifen.
|> D.h. es waeren 1 bzw. 2 Handler.  Dafuer stoert das Fehlen von info doch
|> schon.  Gibt's ne Moeglichkeit, das zu umgehen (rsh? ;^) )?

Ich greife per Parnet auf die Ramdisk, die Festplatte und zwei
Laufwerke des anderen Rechners zu. Das waeren 4 Handler.


    Angela

/*\
 *  "Wenn das Magnet ueber dem Mittelteil des messfuehlers ausgerichtet ist
 *  (wie in der Zeichnung nuanciert), wird die Anzeige erratische Zahlen
 *  zeigen, dei auf falsches Ausrichten zeigen."
 *   --- aus "Vetta WITCHTIG" - Beiblatt zu einem Fahrradtachometer
\*/