%!
%%BoundingBox: (atend)
%%Pages: (atend)
%%DocumentFonts: (atend)
%%EndComments
%
% FrameMaker PostScript Prolog 3.0, for use with FrameMaker 3.0
% Copyright (c) 1986,87,89,90,91 by Frame Technology Corporation.
% All rights reserved.
%
% Known Problems:
% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
/FMversion (3.0) def
% Set up Color vs. Black-and-White
/FMPrintInColor systemdict /colorimage known
systemdict /currentcolortransfer known or def
% Uncomment this line to force b&w on color printer
% /FMPrintInColor false def
/FrameDict 295 dict def
systemdict /errordict known not {/errordict 10 dict def
errordict /rangecheck {stop} put} if
% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
FrameDict /tmprangecheck errordict /rangecheck get put
errordict /rangecheck {FrameDict /bug true put} put
FrameDict /bug false put
mark
% Some PS machines read past the CR, so keep the following 3 lines together!
currentfile 5 string readline
00
0000000000
cleartomark
errordict /rangecheck FrameDict /tmprangecheck get put
FrameDict /bug get {
/readline {
/gstring exch def
/gfile exch def
/gindex 0 def
{
gfile read pop
dup 10 eq {exit} if
dup 13 eq {exit} if
gstring exch gindex exch put
/gindex gindex 1 add def
} loop
pop
gstring 0 gindex getinterval true
} def
} if
/FMVERSION {
FMversion ne {
/Times-Roman findfont 18 scalefont setfont
100 100 moveto
(FrameMaker version does not match postscript_prolog!)
dup =
show showpage
} if
} def
/FMLOCAL {
FrameDict begin
0 def
end
} def
/gstring FMLOCAL
/gfile FMLOCAL
/gindex FMLOCAL
/orgxfer FMLOCAL
/orgproc FMLOCAL
/organgle FMLOCAL
/orgfreq FMLOCAL
/yscale FMLOCAL
/xscale FMLOCAL
/manualfeed FMLOCAL
/paperheight FMLOCAL
/paperwidth FMLOCAL
/FMDOCUMENT {
array /FMfonts exch def
/#copies exch def
FrameDict begin
0 ne dup {setmanualfeed} if
/manualfeed exch def
/paperheight exch def
/paperwidth exch def
/yscale exch def
/xscale exch def
currenttransfer cvlit /orgxfer exch def
currentscreen cvlit /orgproc exch def
/organgle exch def /orgfreq exch def
setpapername
manualfeed {true} {papersize} ifelse
{manualpapersize} {false} ifelse
{desperatepapersize} if
end
} def
/pagesave FMLOCAL
/orgmatrix FMLOCAL
/landscape FMLOCAL
/FMBEGINPAGE {
FrameDict begin
/pagesave save def
3.86 setmiterlimit
/landscape exch 0 ne def
landscape {
90 rotate 0 exch neg translate pop
}
{pop pop}
ifelse
xscale yscale scale
/orgmatrix matrix def
gsave
} def
/FMENDPAGE {
grestore
pagesave restore
end
showpage
} def
/FMFONTDEFINE {
FrameDict begin
findfont
ReEncode
1 index exch
definefont
FMfonts 3 1 roll
put
end
} def
/FMFILLS {
FrameDict begin
array /fillvals exch def
end
} def
/FMFILL {
FrameDict begin
fillvals 3 1 roll put
end
} def
/FMNORMALIZEGRAPHICS {
newpath
0.0 0.0 moveto
1 setlinewidth
0 setlinecap
0 0 0 sethsbcolor
0 setgray
} bind def
/fx FMLOCAL
/fy FMLOCAL
/fh FMLOCAL
/fw FMLOCAL
/llx FMLOCAL
/lly FMLOCAL
/urx FMLOCAL
/ury FMLOCAL
/FMBEGINEPSF {
end
/FMEPSF save def
/showpage {} def
FMNORMALIZEGRAPHICS
[/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall
fx fy translate
rotate
fw urx llx sub div fh ury lly sub div scale
llx neg lly neg translate
} bind def
/FMENDEPSF {
FMEPSF restore
FrameDict begin
} bind def
FrameDict begin
/setmanualfeed {
%%BeginFeature *ManualFeed True
statusdict /manualfeed true put
%%EndFeature
} def
/max {2 copy lt {exch} if pop} bind def
/min {2 copy gt {exch} if pop} bind def
/inch {72 mul} def
/pagedimen {
paperheight sub abs 16 lt exch
paperwidth sub abs 16 lt and
{/papername exch def} {pop} ifelse
} def
/papersizedict FMLOCAL
/setpapername {
/papersizedict 14 dict def
papersizedict begin
/papername /unknown def
/Letter 8.5 inch 11.0 inch pagedimen
/LetterSmall 7.68 inch 10.16 inch pagedimen
/Tabloid 11.0 inch 17.0 inch pagedimen
/Ledger 17.0 inch 11.0 inch pagedimen
/Legal 8.5 inch 14.0 inch pagedimen
/Statement 5.5 inch 8.5 inch pagedimen
/Executive 7.5 inch 10.0 inch pagedimen
/A3 11.69 inch 16.5 inch pagedimen
/A4 8.26 inch 11.69 inch pagedimen
/A4Small 7.47 inch 10.85 inch pagedimen
/B4 10.125 inch 14.33 inch pagedimen
/B5 7.16 inch 10.125 inch pagedimen
end
} def
/papersize {
papersizedict begin
/Letter {lettertray letter} def
/LetterSmall {lettertray lettersmall} def
/Tabloid {11x17tray 11x17} def
/Ledger {ledgertray ledger} def
/Legal {legaltray legal} def
/Statement {statementtray statement} def
/Executive {executivetray executive} def
/A3 {a3tray a3} def
/A4 {a4tray a4} def
/A4Small {a4tray a4small} def
/B4 {b4tray b4} def
/B5 {b5tray b5} def
/unknown {unknown} def
papersizedict dup papername known {papername} {/unknown} ifelse get
end
/FMdicttop countdictstack 1 add def
statusdict begin stopped end
countdictstack -1 FMdicttop {pop end} for
} def
/manualpapersize {
papersizedict begin
/Letter {letter} def
/LetterSmall {lettersmall} def
/Tabloid {11x17} def
/Ledger {ledger} def
/Legal {legal} def
/Statement {statement} def
/Executive {executive} def
/A3 {a3} def
/A4 {a4} def
/A4Small {a4small} def
/B4 {b4} def
/B5 {b5} def
/unknown {unknown} def
papersizedict dup papername known {papername} {/unknown} ifelse get
end
stopped
} def
/desperatepapersize {
statusdict /setpageparams known
{
paperwidth paperheight 0 1
statusdict begin
{setpageparams} stopped pop
end
} if
} def
/savematrix {
orgmatrix currentmatrix pop
} bind def
/restorematrix {
orgmatrix setmatrix
} bind def
/dmatrix matrix def
/dpi 72 0 dmatrix defaultmatrix dtransform
dup mul exch dup mul add sqrt def
/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
/DiacriticEncoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
/numbersign /dollar /percent /ampersand /quotesingle /parenleft
/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
/udieresis /dagger /.notdef /cent /sterling /section /bullet
/paragraph /germandbls /registered /copyright /trademark /acute
/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
/periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
] def
/ReEncode {
dup
length
dict begin
{
1 index /FID ne
{def}
{pop pop} ifelse
} forall
0 eq {/Encoding DiacriticEncoding def} if
currentdict
end
} bind def
/graymode true def
/bwidth FMLOCAL
/bpside FMLOCAL
/bstring FMLOCAL
/onbits FMLOCAL
/offbits FMLOCAL
/xindex FMLOCAL
/yindex FMLOCAL
/x FMLOCAL
/y FMLOCAL
/setpattern {
/bwidth exch def
/bpside exch def
/bstring exch def
/onbits 0 def /offbits 0 def
freq sangle landscape {90 add} if
{/y exch def
/x exch def
/xindex x 1 add 2 div bpside mul cvi def
/yindex y 1 add 2 div bpside mul cvi def
bstring yindex bwidth mul xindex 8 idiv add get
1 7 xindex 8 mod sub bitshift and 0 ne
{/onbits onbits 1 add def 1}
{/offbits offbits 1 add def 0}
ifelse
}
setscreen
{} settransfer
offbits offbits onbits add div FMsetgray
/graymode false def
} bind def
/grayness {
FMsetgray
graymode not {
/graymode true def
orgxfer cvx settransfer
orgfreq organgle orgproc cvx setscreen
} if
} bind def
/HUE FMLOCAL
/SAT FMLOCAL
/BRIGHT FMLOCAL
/Colors FMLOCAL
FMPrintInColor
{
/HUE 0 def
/SAT 0 def
/BRIGHT 0 def
% array of arrays Hue and Sat values for the separations [HUE BRIGHT]
/Colors
[[0 0 ] % black
[0 0 ] % white
[0.00 1.0] % red
[0.37 1.0] % green
[0.60 1.0] % blue
[0.50 1.0] % cyan
[0.83 1.0] % magenta
[0.16 1.0] % comment / yellow
] def
/BEGINBITMAPCOLOR {
BITMAPCOLOR} def
/BEGINBITMAPCOLORc {
BITMAPCOLORc} def
/BEGINBITMAPTRUECOLOR {
BITMAPTRUECOLOR } def
/BEGINBITMAPTRUECOLORc {
BITMAPTRUECOLORc } def
/K {
Colors exch get dup
0 get /HUE exch store
1 get /BRIGHT exch store
HUE 0 eq BRIGHT 0 eq and
{1.0 SAT sub setgray}
{HUE SAT BRIGHT sethsbcolor}
ifelse
} def
/FMsetgray {
/SAT exch 1.0 exch sub store
HUE 0 eq BRIGHT 0 eq and
{1.0 SAT sub setgray}
{HUE SAT BRIGHT sethsbcolor}
ifelse
} bind def
}
{
/BEGINBITMAPCOLOR {
BITMAPGRAY} def
/BEGINBITMAPCOLORc {
BITMAPGRAYc} def
/BEGINBITMAPTRUECOLOR {
BITMAPTRUEGRAY } def
/BEGINBITMAPTRUECOLORc {
BITMAPTRUEGRAYc } def
/FMsetgray {setgray} bind def
/K {
pop
} def
}
ifelse
/normalize {
transform round exch round exch itransform
} bind def
/dnormalize {
dtransform round exch round exch idtransform
} bind def
/lnormalize {
0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
} bind def
/H {
lnormalize setlinewidth
} bind def
/Z {
setlinecap
} bind def
/fillvals FMLOCAL
/X {
fillvals exch get
dup type /stringtype eq
{8 1 setpattern}
{grayness}
ifelse
} bind def
/V {
gsave eofill grestore
} bind def
/N {
stroke
} bind def
/M {newpath moveto} bind def
/E {lineto} bind def
/D {curveto} bind def
/O {closepath} bind def
/n FMLOCAL
/L {
/n exch def
newpath
normalize
moveto
2 1 n {pop normalize lineto} for
} bind def
/Y {
L
closepath
} bind def
/x1 FMLOCAL
/x2 FMLOCAL
/y1 FMLOCAL
/y2 FMLOCAL
/rad FMLOCAL
/R {
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
x1 y1
x2 y1
x2 y2
x1 y2
4 Y
} bind def
% The following commented out code did not work for tangent lines of zero
% length. The code following it was provided by Frame to patch this error.
%
%/RR {
% /rad exch def
% normalize
% /y2 exch def
% /x2 exch def
% normalize
% /y1 exch def
% /x1 exch def
% newpath
% x1 y1 rad add moveto
% x1 y2 x2 y2 rad arcto
% x2 y2 x2 y1 rad arcto
% x2 y1 x1 y1 rad arcto
% x1 y1 x1 y2 rad arcto
% closepath
% 16 {pop} repeat
% } bind def
/rarc
{rad
{arcto} stopped
} bind def
/RR {
/rad exch def
normalize
/y2 exch def
/x2 exch def
normalize
/y1 exch def
/x1 exch def
mark
newpath
x1 y1 rad add moveto
x1 y2 x2 y2 rarc
x2 y2 x2 y1 rarc
x2 y1 x1 y1 rarc
% x2 y1 x1 y1 rarc
x1 y1 x1 y2 rarc
closepath
cleartomark
} bind def
/C {
grestore
gsave
R
clip
} bind def
/FMpointsize FMLOCAL
/F {
FMfonts exch get
FMpointsize scalefont
setfont
} bind def
/Q {
/FMpointsize exch def
F
} bind def
/T {
moveto show
} bind def
/RF {
rotate
0 ne {-1 1 scale} if
} bind def
/TF {
gsave
moveto
RF
show
grestore
} bind def
/P {
moveto
0 32 3 2 roll widthshow
} bind def
/PF {
gsave
moveto
RF
0 32 3 2 roll widthshow
grestore
} bind def
/S {
moveto
0 exch ashow
} bind def
/SF {
gsave
moveto
RF
0 exch ashow
grestore
} bind def
/B {
moveto
0 32 4 2 roll 0 exch awidthshow
} bind def
/BF {
gsave
moveto
RF
0 32 4 2 roll 0 exch awidthshow
grestore
} bind def
/G {
gsave
newpath
normalize translate 0.0 0.0 moveto
dnormalize scale
0.0 0.0 1.0 5 3 roll arc
closepath fill
grestore
} bind def
/A {
gsave
savematrix
newpath
2 index 2 div add exch 3 index 2 div sub exch
normalize 2 index 2 div sub exch 3 index 2 div add exch
translate
scale
0.0 0.0 1.0 5 3 roll arc
restorematrix
stroke
grestore
} bind def
/x FMLOCAL
/y FMLOCAL
/w FMLOCAL
/h FMLOCAL
/xx FMLOCAL
/yy FMLOCAL
/ww FMLOCAL
/hh FMLOCAL
/FMsaveobject FMLOCAL
/FMoptop FMLOCAL
/FMdicttop FMLOCAL
/BEGINPRINTCODE {
/FMdicttop countdictstack 1 add def
/FMoptop count 4 sub def
/FMsaveobject save def
userdict begin
/showpage {} def
FMNORMALIZEGRAPHICS
3 index neg 3 index neg translate
} bind def
/ENDPRINTCODE {
count -1 FMoptop {pop pop} for
countdictstack -1 FMdicttop {pop end} for
FMsaveobject restore
} bind def
/gn {
0
{ 46 mul
cf read pop
32 sub
dup 46 lt {exit} if
46 sub add
} loop
add
} bind def
/str FMLOCAL
/cfs {
/str sl string def
0 1 sl 1 sub {str exch val put} for
str def
} bind def
/ic [
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
0
{0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
{10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
{19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
{13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
{4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
{13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
{7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
{0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
{10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
] def
/sl FMLOCAL
/val FMLOCAL
/ws FMLOCAL
/im FMLOCAL
/bs FMLOCAL
/cs FMLOCAL
/len FMLOCAL
/pos FMLOCAL
/ms {
/sl exch def
/val 255 def
/ws cfs
/im cfs
/val 0 def
/bs cfs
/cs cfs
} bind def
400 ms
/cip {
is
0
cf cs readline pop
{ ic exch get exec
add
} forall
pop
/tot w 1 sub def
0 1 tot {
/indx exch def
/indxa is indx get def
/placer nredt indxa get def
/placeg ngreent indxa get def
/placeb nbluet indxa get def
cris indx placer 255 mul cvi put
cgis indx placeg 255 mul cvi put
cbis indx placeb 255 mul cvi put
} for pop cris
} bind def
/ip {
is
0
cf cs readline pop
{ ic exch get exec
add
} forall
pop
} bind def
/wh {
/len exch def
/pos exch def
ws 0 len getinterval im pos len getinterval copy pop
pos len
} bind def
/bl {
/len exch def
/pos exch def
bs 0 len getinterval im pos len getinterval copy pop
pos len
} bind def
/s1 1 string def
/fl {
/len exch def
/pos exch def
/val cf s1 readhexstring pop 0 get def
pos 1 pos len add 1 sub {im exch val put} for
pos len
} bind def
/hx {
3 copy getinterval
cf exch readhexstring pop pop
} bind def
/h FMLOCAL
/w FMLOCAL
/d FMLOCAL
/lb FMLOCAL
/bitmapsave FMLOCAL
/is FMLOCAL
/cf FMLOCAL
/wbytes {
dup
8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
} bind def
/BEGINBITMAPBWc {
1 {} COMMONBITMAPc
} bind def
/BEGINBITMAPGRAYc {
8 {} COMMONBITMAPc
} bind def
/BEGINBITMAP2BITc {
2 {} COMMONBITMAPc
} bind def
/COMMONBITMAPc {
/r exch def
/d exch def
gsave
translate rotate scale /h exch def /w exch def
/lb w d wbytes def
sl lb lt {lb ms} if
/bitmapsave save def
r
/is im 0 lb getinterval def
ws 0 lb getinterval is copy pop
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{ip} image
bitmapsave restore
grestore
} bind def
/BEGINBITMAPBW {
1 {} COMMONBITMAP
} bind def
/BEGINBITMAPGRAY {
8 {} COMMONBITMAP
} bind def
/BEGINBITMAP2BIT {
2 {} COMMONBITMAP
} bind def
/COMMONBITMAP {
/r exch def
/d exch def
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
r
/is w d wbytes string def
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cf is readhexstring pop} image
bitmapsave restore
grestore
} bind def
/proc1 FMLOCAL
/proc2 FMLOCAL
/newproc FMLOCAL
/Fmcc {
/proc2 exch cvlit def
/proc1 exch cvlit def
/newproc proc1 length proc2 length add array def
newproc 0 proc1 putinterval
newproc proc1 length proc2 putinterval
newproc cvx
} bind def
/ngrayt 256 array def
/nredt 256 array def
/nbluet 256 array def
/ngreent 256 array def
/gryt FMLOCAL
/blut FMLOCAL
/grnt FMLOCAL
/redt FMLOCAL
/indx FMLOCAL
/cynu FMLOCAL
/magu FMLOCAL
/yelu FMLOCAL
/k FMLOCAL
/u FMLOCAL
/colorsetup {
currentcolortransfer
/gryt exch def
/blut exch def
/grnt exch def
/redt exch def
0 1 255 {
/indx exch def
/cynu 1 red indx get 255 div sub def
/magu 1 green indx get 255 div sub def
/yelu 1 blue indx get 255 div sub def
/k cynu magu min yelu min def
nredt indx 1 0 cynu max sub redt exec put
ngreent indx 1 0 magu max sub grnt exec put
nbluet indx 1 0 yelu max sub blut exec put
ngrayt indx 1 k sub gryt exec put
} for
} bind def
/tran FMLOCAL
/fakecolorsetup {
/tran 256 string def
0 1 255 {/indx exch def
tran indx
red indx get 77 mul
green indx get 151 mul
blue indx get 28 mul
add add 256 idiv put} for
currenttransfer
{255 mul cvi tran exch get 255.0 div}
exch Fmcc settransfer
} bind def
/BITMAPCOLOR {
/d 8 def
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
colorsetup
/is w d wbytes string def
/ris w d wbytes string def
/gis w d wbytes string def
/bis w d wbytes string def
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cf is readhexstring pop
/tot w 1 sub def
0 1 tot {
/indx exch def
/indxa is indx get def
/placer nredt indxa get def
/placeg ngreent indxa get def
/placeb nbluet indxa get def
ris indx placer 255 mul cvi put
gis indx placeg 255 mul cvi put
bis indx placeb 255 mul cvi put
} for pop ris}
{gis} {bis} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPCOLORc {
/d 8 def
gsave
translate rotate scale /h exch def /w exch def
/lb w d wbytes def
sl lb lt {lb ms} if
/bitmapsave save def
colorsetup
/is im 0 lb getinterval def
/cris lb string def
/cgis lb string def
/cbis lb string def
ws 0 lb getinterval is copy pop
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cip} {cgis} {cbis} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUECOLORc {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
ws 0 w getinterval is copy pop
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ip} {gip} {bip} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUECOLOR {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
/gis w string def
/bis w string def
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ cf is readhexstring pop }
{ cf gis readhexstring pop }
{ cf bis readhexstring pop }
true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUEGRAYc {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
ws 0 w getinterval is copy pop
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ip gip bip w gray} image
bitmapsave restore
grestore
} bind def
/ww FMLOCAL
/r FMLOCAL
/g FMLOCAL
/b FMLOCAL
/i FMLOCAL
/gray {
/ww exch def
/b exch def
/g exch def
/r exch def
0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul
b i get .114 mul add add r i 3 -1 roll floor cvi put } for
r
} bind def
/BITMAPTRUEGRAY {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
/gis w string def
/bis w string def
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ cf is readhexstring pop
cf gis readhexstring pop
cf bis readhexstring pop w gray} image
bitmapsave restore
grestore
} bind def
/BITMAPGRAY {
8 {fakecolorsetup} COMMONBITMAP
} bind def
/BITMAPGRAYc {
8 {fakecolorsetup} COMMONBITMAPc
} bind def
/ENDBITMAP {
} bind def
end
/ALDsave FMLOCAL
/ALDmatrix matrix def ALDmatrix currentmatrix pop
/StartALD {
/ALDsave save def
savematrix
ALDmatrix setmatrix
} bind def
/InALD {
restorematrix
} bind def
/DoneALD {
ALDsave restore
} bind def
%%EndProlog
%%BeginSetup
(3.0) FMVERSION
1 1 612 792 0 1 7 FMDOCUMENT
0 0 /Palatino-Roman FMFONTDEFINE
1 0 /Times-Roman FMFONTDEFINE
2 0 /Times-Bold FMFONTDEFINE
3 0 /Courier-Bold FMFONTDEFINE
32 FMFILLS
0 0 FMFILL
1 0.1 FMFILL
2 0.3 FMFILL
3 0.5 FMFILL
4 0.7 FMFILL
5 0.9 FMFILL
6 0.97 FMFILL
7 1 FMFILL
8 <0f1e3c78f0e1c387> FMFILL
9 <0f87c3e1f0783c1e> FMFILL
10 <cccccccccccccccc> FMFILL
11 <ffff0000ffff0000> FMFILL
12 <8142241818244281> FMFILL
13 <03060c183060c081> FMFILL
14 <8040201008040201> FMFILL
16 1 FMFILL
17 0.9 FMFILL
18 0.7 FMFILL
19 0.5 FMFILL
20 0.3 FMFILL
21 0.1 FMFILL
22 0.03 FMFILL
23 0 FMFILL
24 <f0e1c3870f1e3c78> FMFILL
25 <f0783c1e0f87c3e1> FMFILL
26 <3333333333333333> FMFILL
27 <0000ffff0000ffff> FMFILL
28 <7ebddbe7e7dbbd7e> FMFILL
29 <fcf9f3e7cf9f3f7e> FMFILL
30 <7fbfdfeff7fbfdfe> FMFILL
%%EndSetup
%%Page: "1" 1
%%BeginPaperSize: Letter
%%EndPaperSize
612 792 0 FMBEGINPAGE
0 8 Q
0 X
0 K
(Silicon Graphics Pr) 72 750.67 T
(oprietary) 139.57 750.67 T
72 54 540 54 2 L
0.25 H
2 Z
N
(xFS Pr) 72 42.62 T
(oject Description) 94.61 42.62 T
(October 7, 1993) 260.9 42.62 T
(1) 500 42.62 T
1 24 Q
(xFS Project Description) 190.73 704 T
2 12 Q
(Doug Doucette) 268.2 664 T
2 16 Q
(1.0 Scope of pr) 72 621.33 T
(oject) 176.98 621.33 T
1 12 Q
1.1 (This project is concerned with producing a \322next generation\323 \336le system for IRIX. Included in) 72 594 P
-0.25 (this is the underlying volume manager) 72 580 P
-0.25 (, disk driver) 254.49 580 P
-0.25 (, buf) 311.14 580 P
-0.25 (fer cache and virtual memory support. Also) 332.66 580 P
(included are additional semantics added for reasons such as standardization, new products, etc.) 72 566 T
2 16 Q
(2.0 High-level goals) 72 525.33 T
3 12 Q
(\245) 72 502 T
1 F
0.18 (Lar) 85.75 502 P
0.18 (ge systems must be saleable as scienti\336c \336le and compute servers, as commercial data pro-) 102.18 502 P
(cessing servers, and as digital media servers.) 85.75 488 T
3 F
(\245) 72 468 T
1 F
1.64 (The same software must be able to run on all supported SGI machines, in particular small) 85.75 468 P
(machines must be supported well.) 85.75 454 T
3 F
(\245) 72 434 T
1 F
(The \336lesystem should replace EFS completely) 85.75 434 T
(, i.e. it should do everything that EFS does.) 307.83 434 T
3 F
(\245) 72 414 T
1 F
(The volume manager should replace the current two volume managers completely) 85.75 414 T
(.) 479.33 414 T
3 F
(\245) 72 394 T
1 F
(The \336lesystem must out-perform EFS on benchmarks that represent useful activity) 85.75 394 T
(.) 481.37 394 T
3 F
(\245) 72 374 T
1 F
-0.09 (The \336lesystem must support high availability by recovering quickly from failures and by keep-) 85.75 374 P
(ing its disk-based data in a consistent state at all times.) 85.75 360 T
3 F
(\245) 72 340 T
1 F
0.96 (The \336lesystem and volume manager must support future extensions in certain speci\336c areas,) 85.75 340 P
(i.e. high availability) 85.75 326 T
(, distributed \336le systems, and user transactions.) 180.92 326 T
2 16 Q
(3.0 Detailed r) 72 285.33 T
(equir) 167.64 285.33 T
(ements) 203.78 285.33 T
1 12 Q
1.14 (The goals from section 2 should guide us in determining a detailed set of requirements for the) 72 258 P
0.94 (project. These are broken up into groups below) 72 244 P
0.94 (. Items in the \322implementation\323 sections are not) 304.27 244 P
-0.12 (really requirements in the same sense that the \322functionality\323 items are; they represent our current) 72 230 P
1.06 (ideas about how to ful\336ll the functional requirements. In each section, the items are not in any) 72 216 P
(particular order) 72 202 T
(.) 145.6 202 T
2 14 Q
(3.1 File system functionality) 72 168.67 T
3 12 Q
(\245) 72 148 T
1 F
-0.01 (Implement asynchronous I/O, direct I/O, and synchronous I/O as is done in EFS, in addition to) 85.75 148 P
(\322normal\323 \050buf) 85.75 134 T
(fered\051 I/O.) 153.14 134 T
3 F
(\245) 72 114 T
1 F
0.13 (Ef) 85.75 114 P
0.13 (\336cient support for very lar) 96.85 114 P
0.13 (ge \336les, where very lar) 223.07 114 P
0.13 (ge means a 64 bit size. There should be lit-) 332.95 114 P
0.82 (tle or no performance penalty to access blocks in dif) 85.75 100 P
0.82 (ferent areas of the \336le. Some disk space) 343.73 100 P
0.16 (penalty \050for indices, for example\051 is allowed to increase performance. Linear searches through) 85.75 86 P
(the \336lesystem data structures to get to blocks at the end of a lar) 85.75 72 T
(ge \336le are unacceptable.) 387.66 72 T
FMENDPAGE
%%EndPage: "1" 2
%%Page: "2" 2
612 792 0 FMBEGINPAGE
0 8 Q
0 X
0 K
(Silicon Graphics Pr) 72 750.67 T
(oprietary) 139.57 750.67 T
72 54 540 54 2 L
0.25 H
2 Z
N
(xFS Pr) 72 42.62 T
(oject Description) 94.61 42.62 T
(October 7, 1993) 260.9 42.62 T
(2) 500 42.62 T
3 12 Q
(\245) 72 712 T
1 F
0.63 (Ef) 85.75 712 P
0.63 (\336cient support for sparse \336les. Arbitrary \322holes\323 must be supported, areas of the \336le which) 96.85 712 P
0.07 (have never been written and which read back as zeroes. The representation must be disk-space) 85.75 698 P
-0.06 (ef) 85.75 684 P
-0.06 (\336cient as well as cpu-time ef) 94.86 684 P
-0.06 (\336cient in retrieval of old data and insertion of new data. There is) 231.92 684 P
-0.21 (no requirement to detect blocks of zeroes being written in order to replace them with holes \050nor) 85.75 670 P
-0.04 (is it forbidden\051. This capability is important for some scienti\336c and compute-intensive applica-) 85.75 656 P
(tions, as well as for Hierarchical Storage Management \050HSM\051.) 85.75 642 T
3 F
(\245) 72 622 T
1 F
-0.29 (Ef) 85.75 622 P
-0.29 (\336cient support for very small \336les, under 1kb or so. A normal root or usr \336lesystem has many) 96.85 622 P
0.85 (such \336les, as does a \336lesystem which contains program sources. Most symbolic links \336t into) 85.75 608 P
(this category) 85.75 594 T
(, as well.) 146.6 594 T
3 F
(\245) 72 574 T
1 F
0.62 (Ef) 85.75 574 P
0.62 (\336cient support for lar) 96.85 574 P
0.62 (ge directories, both for searches and for insertions and deletions. This) 200.08 574 P
(implies some index scheme, to avoid linear searches through a long directory) 85.75 560 T
(.) 455.38 560 T
3 F
(\245) 72 540 T
1 F
0.47 (The time to recover from failure does not increase with the size of the \336lesystem. The time is) 85.75 540 P
0.97 (allowed to increase with the level of activity in the \336lesystem at the time of the failure. The) 85.75 526 P
-0.21 (recovery scheme must not scan all inodes, or all directories, to ensure consistency) 85.75 512 P
-0.21 (. This implies) 474.79 512 P
-0.18 (that consistency is guaranteed by use of a log, since the alternative \050synchronous behavior as in) 85.75 498 P
(MS-DOS\051 is unacceptably slow) 85.75 484 T
(.) 237.21 484 T
3 F
(\245) 72 464 T
1 F
1.05 (Recovery never backs out changes that were \322committed\323 after returning successfully to the) 85.75 464 P
-0.19 (user) 85.75 450 P
-0.19 (. Some operations must be synchronous, at least as far as the log writes are concerned. Cer-) 105.07 450 P
0.5 (tainly this includes \336le creation and deletion, and does not include ordinary \050buf) 85.75 436 P
0.5 (fered\051 writes.) 475.57 436 P
([There is already some disagreement about this section.]) 85.75 422 T
3 F
(\245) 72 402 T
1 F
-0.08 (Supports ACLs and other POSIX.6 functionality) 85.75 402 P
-0.08 (. This includes some form of support for Man-) 317.77 402 P
(datory Access Controls, Information Labeling \050?\051, and auditing.) 85.75 388 T
3 F
(\245) 72 368 T
1 F
0.77 (Supports extents, logically contiguous regions in a single \336le. It is not a requirement that the) 85.75 368 P
0.73 (extents be exposed in the programming interface to the user) 85.75 354 P
0.73 (. This is primarily a performance) 378.46 354 P
0.46 (issue but we may choose to make the extent sizes visible or settable per) 85.75 340 P
0.46 (-\336le. W) 434.2 340 P
0.46 (e must also be) 470.34 340 P
-0.28 (able to ensure the user that their \336les are contiguous, implying that there is some way to display) 85.75 326 P
(layout information, and some way to make a \336le contiguous \050fsr) 85.75 312 T
(, for example\051.) 392.73 312 T
3 F
(\245) 72 292 T
1 F
0.51 (Supports multiple logical block sizes, ranging from the disk sector size up to something lar) 85.75 292 P
0.51 (ge) 528.68 292 P
0.92 (like 64k or 256k. The block size is set at \336lesystem creation time. It is the minimum unit of) 85.75 278 P
(allocation in the \336lesystem.) 85.75 264 T
3 F
(\245) 72 244 T
1 F
-0.15 (Supports multiple physical sector sizes. This allows us to support dif) 85.75 244 P
-0.15 (ferent disk hardware with-) 413.55 244 P
0.17 (out a built-in reliance on a particular formatted sector size. Smaller sector sizes yield less total) 85.75 230 P
0.2 (useable disk space, so more ef) 85.75 216 P
0.2 (\336cient use of current disks can be made by increasing the sector) 231.74 216 P
(size.) 85.75 202 T
3 F
(\245) 72 182 T
1 F
-0.22 (Allow the \336lesystem to change size on-line, possible automatically as well as by administrative) 85.75 182 P
1.5 (command. The \336lesystem\325) 85.75 168 P
1.5 (s underlying space \050volume\051 can grow) 215.67 168 P
1.5 (, so the \336lesystem must be) 405.91 168 P
-0.19 (able to use the new space. It is also possible to allow communication between the volume man-) 85.75 154 P
-0.17 (ager and the \336lesystem so that the \336lesystem will ask the volume manager to grow the underly-) 85.75 140 P
-0.28 (ing volume when the \336lesystem is getting full. It is not a requirement to allow on-line shrinking) 85.75 126 P
(of a \336lesystem; it is a requirement to allow of) 85.75 112 T
(f-line shrinking.) 303.73 112 T
FMENDPAGE
%%EndPage: "2" 3
%%Page: "3" 3
612 792 0 FMBEGINPAGE
0 8 Q
0 X
0 K
(Silicon Graphics Pr) 72 750.67 T
(oprietary) 139.57 750.67 T
72 54 540 54 2 L
0.25 H
2 Z
N
(xFS Pr) 72 42.62 T
(oject Description) 94.61 42.62 T
(October 7, 1993) 260.9 42.62 T
(3) 500 42.62 T
3 12 Q
(\245) 72 712 T
1 F
1.99 (Allow the separation of \336lesystem space between inodes and data to change on-line. This) 85.75 712 P
-0.09 (implies dynamic allocation of the space for inodes as the only reasonable implementation. Of) 85.75 698 P
-0.09 (f-) 532.01 698 P
0.39 (line change doesn\325) 85.75 684 P
0.39 (t imply anything about the allocation mechanisms; they could still be static) 176.24 684 P
-0.04 (in that case. Note that any mechanism which yields dif) 85.75 670 P
-0.04 (ferent numbers of inodes in each alloca-) 347.71 670 P
(tion group implies some sort of indexing scheme to \336nd the inodes.) 85.75 656 T
3 F
(\245) 72 636 T
1 F
0.21 (High throughput for \336le server and compute server applications. In particular) 85.75 636 P
0.21 (, the NFS perfor-) 457.43 636 P
2.06 (mance must make our system price/performance competitive. Compute server applications) 85.75 622 P
(need high single-\336le throughput.) 85.75 608 T
3 F
(\245) 72 588 T
1 F
0.41 (Extremely high throughput for video server applications. This means that sequential access to) 85.75 588 P
-0.01 (lar) 85.75 574 P
-0.01 (ge \336les must be very fast. This might be done via hints from the application about necessary) 98.19 574 P
(read performance, rather than by the default mechanisms.) 85.75 560 T
3 F
(\245) 72 540 T
1 F
-0.1 (Fast, guaranteed response time for digital media and other real-time applications. Preallocation) 85.75 540 P
0.26 (of blocks for POSIX 1003.4 functionality) 85.75 526 P
0.26 (. W) 285.48 526 P
0.26 (e don\325) 302.1 526 P
0.26 (t really know how to do this yet. It\325) 332.45 526 P
0.26 (s possi-) 503.42 526 P
(ble this should be pushed to user mode, and probable that it won\325) 85.75 512 T
(t make our \336rst release.) 398.34 512 T
3 F
(\245) 72 492 T
1 F
0.18 (High throughput for random access to very lar) 85.75 492 P
0.18 (ge databases, via direct I/O and asynchronous I/) 308.94 492 P
(O. These applications will want to bypass the buf) 85.75 478 T
(fer cache and implement their own cacheing.) 322.38 478 T
3 F
(\245) 72 458 T
1 F
0.61 (Backup and HSM interfaces for Epoch and similar systems are supported. File migration and) 85.75 458 P
-0.03 (backup tools are supported or supplied by us. Backup tools allow full and incremental backups) 85.75 444 P
(in a reasonable length of time.) 85.75 430 T
3 F
(\245) 72 410 T
1 F
0.82 (It must be possible to restore \336lesystems from backup media after a disaster) 85.75 410 P
0.82 (, in a reasonably) 458.92 410 P
0.72 (short amount of time. File restore must also allow selection of individual \336les to restore, and) 85.75 396 P
(must allow the backup media to be remote from the \336lesystem.) 85.75 382 T
2 14 Q
(3.2 File system implementation) 72 348.67 T
3 12 Q
(\245) 72 328 T
1 F
0.43 (The \336le system is implemented under vnodes, possibly extended from the current ones. Other) 85.75 328 P
0.88 (\336le systems \050excluding EFS\051 in IRIX continue to run with little or no implementation ef) 85.75 314 P
0.88 (fort.) 519.68 314 P
(EFS must continue to run, but may have impaired performance.) 85.75 300 T
3 F
(\245) 72 280 T
1 F
-0.08 (File system is implemented as a \322journalled\323 \336lesystem. This is implied by the requirement for) 85.75 280 P
(a small recovery time for lar) 85.75 266 T
(ge \336lesystems.) 221.76 266 T
3 F
(\245) 72 246 T
1 F
0.15 (Implement using message passing and kernel threads. The former allows later distribution in a) 85.75 246 P
(network. The latter allows greater performance and ease of implementation.) 85.75 232 T
3 F
(\245) 72 212 T
1 F
1.98 (Implement so that a user) 85.75 212 P
1.98 (-mode \322simulation\323 of the \336lesystem is functional and usable for) 211.36 212 P
(debugging and performance modelling.) 85.75 198 T
3 F
(\245) 72 178 T
1 F
1.72 (Support lar) 85.75 178 P
1.72 (ge, sparse \336les with a B-tree representation of the data blocks in the \336les. This) 140.88 178 P
(makes the performance of these \336les acceptable. Any equivalent index scheme will do as well.) 85.75 164 T
3 F
(\245) 72 144 T
1 F
1.89 (Delay allocation of user data blocks when possible to make blocks more contiguous. This) 85.75 144 P
0.67 (allows us to make extents lar) 85.75 130 P
0.67 (ge without requiring the user to specify extent size, and without) 227.81 130 P
2.14 (requiring a \336lesystem reor) 85.75 116 P
2.14 (ganizer to \336x the extent sizes up after the fact. Users may still) 218.2 116 P
0.69 (require that certain \336les be contiguous, and so we will need a \336le system reor) 85.75 102 P
0.69 (ganizer for that) 465.34 102 P
(purpose.) 85.75 88 T
FMENDPAGE
%%EndPage: "3" 4
%%Page: "4" 4
612 792 0 FMBEGINPAGE
0 8 Q
0 X
0 K
(Silicon Graphics Pr) 72 750.67 T
(oprietary) 139.57 750.67 T
72 54 540 54 2 L
0.25 H
2 Z
N
(xFS Pr) 72 42.62 T
(oject Description) 94.61 42.62 T
(October 7, 1993) 260.9 42.62 T
(4) 500 42.62 T
3 12 Q
(\245) 72 712 T
1 F
0.72 (Store symlinks and other small \336les in the inode when possible. By doing so, we save a disk) 85.75 712 P
(block and the time to read it.) 85.75 698 T
3 F
(\245) 72 678 T
1 F
0.89 (Support directories with some form of indexed structure, so that searches are faster for lar) 85.75 678 P
0.89 (ge) 528.68 678 P
(directories. Some form of B-tree will work.) 85.75 664 T
3 F
(\245) 72 644 T
1 F
0.76 (Support low-power machines with the ability to turn of) 85.75 644 P
0.76 (f the disk drives when they are not in) 356.08 644 P
(use, and turn them on again when needed.) 85.75 630 T
2 14 Q
(3.3 V) 72 596.67 T
(olume manager functionality) 105.3 596.67 T
3 12 Q
(\245) 72 576 T
1 F
1.5 (Mirroring \050plexing\051 of storage. Flexibility is required, we do not want to require duplexing) 85.75 576 P
(entire disks, or limiting to two plexes.) 85.75 562 T
3 F
(\245) 72 542 T
1 F
(Disk striping. Required for performance on lar) 85.75 542 T
(ge systems.) 309.03 542 T
3 F
(\245) 72 522 T
1 F
0.44 (Concatenation of storage sections. Should be able to build arbitrarily lar) 85.75 522 P
0.44 (ge volumes, up to the) 435.32 522 P
(64-bit limit.) 85.75 508 T
3 F
(\245) 72 488 T
1 F
(On-line re-sizing of volumes. Concatenation can be used for this.) 85.75 488 T
3 F
(\245) 72 468 T
1 F
1.17 (Separate logging and data sub-volumes. Logging sub-volumes are needed by the \336lesystem.) 85.75 468 P
(Each should be sized independently in each portion of the volume.) 85.75 454 T
3 F
(\245) 72 434 T
1 F
1.41 (High throughput for \336le server applications. The performance penalty for using the volume) 85.75 434 P
(manager should be vanishingly small in normal operation.) 85.75 420 T
3 F
(\245) 72 400 T
1 F
0.42 (Support of RAID devices at their full performance. Implies lar) 85.75 400 P
0.42 (ge transfers generated from the) 389.11 400 P
(\336lesystem code, through the volume manager) 85.75 386 T
(, down to the RAID driver) 303.79 386 T
(.) 429.71 386 T
3 F
(\245) 72 366 T
1 F
1.29 (Fast, guaranteed response time for digital media and other real-time applications. W) 85.75 366 P
1.29 (e might) 502.39 366 P
1.33 (want to restrict this to certain disk types, if there are disk types we think cannot meet such) 85.75 352 P
(requirements.) 85.75 338 T
3 F
(\245) 72 318 T
1 F
0.73 (Support of multiple-access \050dual-ported\051 disk controllers. Necessary for real high-availability) 85.75 318 P
(applications.) 85.75 304 T
3 F
(\245) 72 284 T
1 F
(Dynamic relocation of control for a volume. Necessary for high availability) 85.75 284 T
(.) 447.69 284 T
3 F
(\245) 72 264 T
1 F
0.07 (Support multiple logical sector sizes \050one per volume\051. This supports the equivalent \336lesystem) 85.75 264 P
(requirement.) 85.75 250 T
3 F
(\245) 72 230 T
1 F
-0.23 (The new and old volume managers \050lv) 85.75 230 P
-0.23 (, not V) 268.13 230 P
-0.23 (eritas\051 must be able to run in the same system. It is) 299.33 230 P
(not a requirement to run a V) 85.75 216 T
(eritas volume in the same system.) 220.32 216 T
3 F
(\245) 72 196 T
1 F
0.76 (EFS and non \336lesystem applications must be able to run on top of the new volume manager) 85.75 196 P
0.76 (.) 537 196 P
(Ordinary driver interfaces must be presented to these clients, even if xFS doesn\325) 85.75 182 T
(t use them.) 470.25 182 T
2 14 Q
(3.4 V) 72 148.67 T
(olume manager implementation) 105.3 148.67 T
3 12 Q
(\245) 72 128 T
1 F
1.35 (Logging of written blocks when volume is incomplete. Necessary for high availability \050fast) 85.75 128 P
(recovery from a disk failure\051.) 85.75 114 T
3 F
(\245) 72 94 T
1 F
(Implement using message passing and kernel threads, to allow later distribution in a network.) 85.75 94 T
FMENDPAGE
%%EndPage: "4" 5
%%Page: "5" 5
612 792 0 FMBEGINPAGE
0 8 Q
0 X
0 K
(Silicon Graphics Pr) 72 750.67 T
(oprietary) 139.57 750.67 T
72 54 540 54 2 L
0.25 H
2 Z
N
(xFS Pr) 72 42.62 T
(oject Description) 94.61 42.62 T
(October 7, 1993) 260.9 42.62 T
(5) 500 42.62 T
2 16 Q
(4.0 Buffer cache and virtual memory support) 72 709.33 T
3 12 Q
(\245) 72 686 T
1 F
-0.09 (Need to be able to keep blocks from going to disk until prerequisite blocks have gone out. This) 85.75 686 P
(allows us to keep consistency with the logging \336lesystem.) 85.75 672 T
3 F
(\245) 72 652 T
1 F
0.99 (May need to \336nish the memory mapped \336les implementation, it is not complete in IRIX 5.0) 85.75 652 P
(\050memcntl interface is stuf) 85.75 638 T
(fed out\051. This implies some additional virtual memory work.) 208.45 638 T
2 16 Q
(5.0 Possible r) 72 597.33 T
(equir) 165.88 597.33 T
(ements) 202.02 597.33 T
3 12 Q
(\245) 72 574 T
1 F
1.41 (Support DFS vnode interfaces. This has to wait until we \336gure out what is happening with) 85.75 574 P
(DFS.) 85.75 560 T
FMENDPAGE
%%EndPage: "5" 6
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 5 1
%%DocumentFonts: Palatino-Roman
%%+ Times-Roman
%%+ Times-Bold
%%+ Courier-Bold