[BACK]Return to arch.ps CVS log [TXT][DIR] Up to [Development] / xfs-website / design_docs / xfsdocs93_ps

File: [Development] / xfs-website / design_docs / xfsdocs93_ps / arch.ps (download)

Revision 1.1, Wed Mar 29 22:55:48 2000 UTC (17 years, 7 months ago) by cattelan
Branch: MAIN
CVS Tags: HEAD

Add files with -kb flag

%!
%%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 12 FMDOCUMENT
0 0 /Palatino-Roman FMFONTDEFINE
1 0 /Times-Roman FMFONTDEFINE
2 0 /Times-Bold FMFONTDEFINE
3 0 /Courier-Bold FMFONTDEFINE
4 0 /Times-Italic FMFONTDEFINE
5 0 /Helvetica FMFONTDEFINE
6 0 /Times-BoldItalic 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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(1) 500 42.62 T
1 24 Q
(xFS Project Architecture) 186.75 704 T
2 12 Q
(Curtis Anderson) 263.19 664 T
(Doug Doucette) 268.2 648 T
(Jeff Glover) 277.19 632 T
(W) 286.51 616 T
(ei Hu) 297.84 616 T
(Michael Nishimoto) 257.53 600 T
(Geoff Peck) 277.86 584 T
(Adam Sweeney) 266.86 568 T
2 16 Q
(1.0  Intr) 72 525.33 T
(oduction) 127.23 525.33 T
1 12 Q
0.74 (This project is concerned with producing a next generation \336le system and volume manager for) 72 498 P
-0.01 (IRIX. Included in this project are changes to the underlying disk drivers, buf) 72 484 P
-0.01 (fer cache, and virtual) 438.78 484 P
0.83 (memory support. Also included are additional semantics added for reasons such as standardiza-) 72 470 P
(tion, new products, new markets, etc.) 72 456 T
2 16 Q
(2.0  Goals and Requir) 72 415.33 T
(ements) 220.54 415.33 T
2 14 Q
(2.1  High-level goals) 72 380.67 T
3 12 Q
(\245) 72 360 T
1 F
0.18 (Lar) 85.75 360 P
0.18 (ge systems must be saleable as scienti\336c \336le and compute servers, as commercial data pro-) 102.18 360 P
(cessing servers, and as digital media servers.) 85.75 346 T
3 F
(\245) 72 326 T
1 F
1.64 (The same software must be able to run on all supported SGI machines, in particular small) 85.75 326 P
(machines must be supported well.) 85.75 312 T
3 F
(\245) 72 292 T
1 F
0.62 (The \336le system should replace EFS \050the current SGI \336le system\051 completely) 85.75 292 P
0.62 (, i.e. it should do) 457.22 292 P
(everything that EFS does.) 85.75 278 T
3 F
(\245) 72 258 T
1 F
(The volume manager should replace the current two volume managers completely) 85.75 258 T
(.) 479.33 258 T
3 F
(\245) 72 238 T
1 F
(The \336le system must out-perform EFS on benchmarks that represent useful activity) 85.75 238 T
(.) 484.37 238 T
3 F
(\245) 72 218 T
1 F
-0.29 (The \336le system must support high availability by recovering quickly from failures and by keep-) 85.75 218 P
(ing its disk-based data in a consistent state at all times.) 85.75 204 T
3 F
(\245) 72 184 T
1 F
0.38 (The \336le system and volume manager design must support future extensions in certain speci\336c) 85.75 184 P
(areas, i.e. high availability) 85.75 170 T
(, distributed \336le systems, and user transactions.) 211.55 170 T
2 14 Q
(2.2  Detailed r) 72 136.67 T
(equir) 155.69 136.67 T
(ements) 187.31 136.67 T
1 12 Q
0.84 (The goals from section) 72 110 P
0.84 (2.1 have guided us in determining a detailed set of requirements for the) 187.79 110 P
1.75 (project. These are broken up into groups below) 72 96 P
1.75 (. Items in the) 309.93 96 P
4 F
1.75 (implementation) 382.53 96 P
1 F
1.75 ( sections are not) 457.16 96 P
0.69 (really requirements in the same sense that the) 72 82 P
4 F
0.69 (functionality) 298.7 82 P
1 F
0.69 ( items are; they represent our current) 359.34 82 P
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(2) 500 42.62 T
1 12 Q
1.06 (ideas about how to ful\336ll the functional requirements. In each section, the items are not in any) 72 712 P
(particular order) 72 698 T
(.) 145.6 698 T
2 F
(2.2.1  File System Requir) 72 666 T
(ements) 199.71 666 T
(2.2.1.1  File system functionality) 72 634 T
3 F
(\245) 72 614 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 614 P
(normal \050buf) 85.75 600 T
(fered\051 I/O.) 142.49 600 T
3 F
(\245) 72 580 T
1 F
0.17 (Ef) 85.75 580 P
0.17 (\336cient support for very lar) 96.85 580 P
0.17 (ge \336les, where very lar) 223.23 580 P
0.17 (ge means a 64 bit size. There must be little) 333.27 580 P
0.24 (or no performance penalty to access blocks in dif) 85.75 566 P
0.24 (ferent areas of the \336le. Some disk space pen-) 323.26 566 P
0.12 (alty \050for indices, for example\051 is allowed to increase performance. Linear searches through the) 85.75 552 P
(\336le system data structures to get to blocks at the end of a lar) 85.75 538 T
(ge \336le are unacceptable.) 373.01 538 T
3 F
(\245) 72 518 T
1 F
1.39 (Ef) 85.75 518 P
1.39 (\336cient support for sparse \336les. Arbitrary holes must be supported, areas of the \336le which) 96.85 518 P
0.07 (have never been written and which read back as zeroes. The representation must be disk-space) 85.75 504 P
-0.06 (ef) 85.75 490 P
-0.06 (\336cient as well as cpu-time ef) 94.86 490 P
-0.06 (\336cient in retrieval of old data and insertion of new data. There is) 231.92 490 P
-0.21 (no requirement to detect blocks of zeroes being written in order to replace them with holes \050nor) 85.75 476 P
-0.04 (is it forbidden\051. This capability is important for some scienti\336c and compute-intensive applica-) 85.75 462 P
(tions, as well as for Hierarchical Storage Management \050HSM\051.) 85.75 448 T
3 F
(\245) 72 428 T
1 F
1 (Ef) 85.75 428 P
1 (\336cient support for very small \336les, under 1KB or so. A normal root or usr \336le system has) 96.85 428 P
0.06 (many such \336les, as does a \336le system which contains program sources. Most symbolic links \336t) 85.75 414 P
(into this category) 85.75 400 T
(, as well.) 168.26 400 T
3 F
(\245) 72 380 T
1 F
0.62 (Ef) 85.75 380 P
0.62 (\336cient support for lar) 96.85 380 P
0.62 (ge directories, both for searches and for insertions and deletions. This) 200.08 380 P
(implies some index scheme, to avoid linear searches through a long directory) 85.75 366 T
(.) 455.38 366 T
3 F
(\245) 72 346 T
1 F
0.27 (The time to recover from failure does not increase with the size of the \336le system. The time is) 85.75 346 P
0.75 (allowed to increase with the level of activity in the \336le system at the time of the failure. The) 85.75 332 P
-0.21 (recovery scheme must not scan all inodes, or all directories, to ensure consistency) 85.75 318 P
-0.21 (. This implies) 474.79 318 P
-0.18 (that consistency is guaranteed by use of a log, since the alternative \050synchronous behavior as in) 85.75 304 P
(MS-DOS\051 is unacceptably slow) 85.75 290 T
(.) 237.21 290 T
3 F
(\245) 72 270 T
1 F
-0.16 (Recovery never backs out changes that were committed after returning successfully to the user) 85.75 270 P
-0.16 (.) 537 270 P
-0.07 (Some operations must be synchronous, at least as far as the log writes are concerned. Certainly) 85.75 256 P
(this includes \336le creation and deletion, and does not include ordinary \050buf) 85.75 242 T
(fered\051 writes.) 439.29 242 T
3 F
(\245) 72 222 T
1 F
0.08 (Supports ACLs and other POSIX 1003.6 functionality) 85.75 222 P
0.08 (. This includes some form of support for) 345.6 222 P
(Mandatory Access Controls, Information Labeling, and auditing.) 85.75 208 T
3 F
(\245) 72 188 T
1 F
0.65 (Supports extents, contiguous regions in a single \336le. Contiguity is de\336ned with respect to the) 85.75 188 P
-0.13 (underlying logical volume, not with respect to the actual disk space. It is not a requirement that) 85.75 174 P
1.33 (the extents be exposed in the programming interface to the user) 85.75 160 P
1.33 (. This is primarily a perfor-) 402.8 160 P
(mance issue but we may choose to make the extent sizes visible or settable per) 85.75 146 T
(-\336le.) 462.57 146 T
3 F
(\245) 72 126 T
1 F
0.51 (Supports multiple logical block sizes, ranging from the disk sector size up to something lar) 85.75 126 P
0.51 (ge) 528.68 126 P
0.29 (like 64KB or 256KB. The block size is set at \336le system creation time. It is the minimum unit) 85.75 112 P
(of allocation in the \336le system \050except for inodes, which can be smaller\051.) 85.75 98 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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(3) 500 42.62 T
3 12 Q
(\245) 72 712 T
1 F
-0.15 (Supports multiple physical sector sizes. This allows us to support dif) 85.75 712 P
-0.15 (ferent disk hardware with-) 413.55 712 P
0.17 (out a built-in reliance on a particular formatted sector size. Smaller sector sizes yield less total) 85.75 698 P
0.2 (useable disk space, so more ef) 85.75 684 P
0.2 (\336cient use of current disks can be made by increasing the sector) 231.74 684 P
(size.) 85.75 670 T
3 F
(\245) 72 650 T
1 F
0.59 (Allow the \336le system to change size on-line, possible automatically as well as by administra-) 85.75 650 P
0.38 (tive command. The \336le system\325) 85.75 636 P
0.38 (s underlying space \050volume\051 can grow) 238.18 636 P
0.38 (, so the \336le system must) 422.82 636 P
0.64 (be able to use the new space. It is also possible to allow communication between the volume) 85.75 622 P
0.83 (manager and the \336le system so that the \336le system will ask the volume manager to grow the) 85.75 608 P
-0.17 (underlying volume when the \336le system is getting full \050this is a low priority goal, not a require-) 85.75 594 P
0.31 (ment\051. It is not a requirement to allow on-line shrinking of a \336le system; it is a requirement to) 85.75 580 P
(allow of) 85.75 566 T
(f-line shrinking.) 125.17 566 T
3 F
(\245) 72 546 T
1 F
1.64 (Allow the separation of \336le system space between inodes and data to change on-line. This) 85.75 546 P
1.85 (implies dynamic allocation of the space for inodes as the only reasonable implementation.) 85.75 532 P
1.06 (Note that any mechanism which yields dif) 85.75 518 P
1.06 (ferent numbers of inodes in each allocation group) 294.43 518 P
(implies some sort of indexing scheme to \336nd the inodes.) 85.75 504 T
3 F
(\245) 72 484 T
1 F
-0.07 (It must be possible to attach an) 85.75 484 P
4 F
-0.07 (arbitrary attribute) 236.83 484 P
1 F
-0.07 ( to any object in the namespace. An arbitrary) 325.06 484 P
0.05 (attribute is a \050name, value\051 pair where the name is a printable string and the value is a smallish) 85.75 470 P
(string of arbitrary bytes.) 85.75 456 T
3 F
(\245) 72 436 T
1 F
0.21 (High throughput for \336le server and compute server applications. In particular) 85.75 436 P
0.21 (, the NFS perfor-) 457.43 436 P
2.06 (mance must make our system price/performance competitive. Compute server applications) 85.75 422 P
(need high single-\336le throughput.) 85.75 408 T
3 F
(\245) 72 388 T
1 F
0.41 (Extremely high throughput for video server applications. This means that sequential access to) 85.75 388 P
2.36 (lar) 85.75 374 P
2.36 (ge \336les must be very fast. This will be done via directives from the application about) 98.19 374 P
(required read/write performance rates.) 85.75 360 T
3 F
(\245) 72 340 T
1 F
0.56 (Fast, guaranteed response time for digital media and other real-time applications. In part, this) 85.75 340 P
0.05 (requirement will be met by providing portable interfaces for real-time programming de\336ned in) 85.75 326 P
(POSIX 1003.4; this includes preallocation of blocks to \336les.) 85.75 312 T
3 F
(\245) 72 292 T
1 F
0.18 (High throughput for random access to very lar) 85.75 292 P
0.18 (ge databases, via direct I/O and asynchronous I/) 308.94 292 P
(O. Such applications may elect to bypass the buf) 85.75 278 T
(fer cache and implement their own cacheing.) 319.05 278 T
3 F
(\245) 72 258 T
1 F
0.61 (Backup and HSM interfaces for Epoch and similar systems are supported. File migration and) 85.75 258 P
-0.03 (backup tools are supported or supplied by us. Backup tools allow full and incremental backups) 85.75 244 P
(in a reasonable length of time, even for systems with very lar) 85.75 230 T
(ge amounts of online storage.) 378.65 230 T
3 F
(\245) 72 210 T
1 F
0.82 (It must be possible to restore \336lesystems from backup media after a disaster) 85.75 210 P
0.82 (, in a reasonably) 458.92 210 P
0.72 (short amount of time. File restore must also allow selection of individual \336les to restore, and) 85.75 196 P
(must allow the backup media to be remote from the \336le system.) 85.75 182 T
3 F
(\245) 72 162 T
1 F
0.76 (Support low-power machines with the ability to turn of) 85.75 162 P
0.76 (f the disk drives when they are not in) 356.08 162 P
(use, and turn them on again when needed.) 85.75 148 T
2 F
(2.2.1.2  File system implementation) 72 116 T
3 F
(\245) 72 96 T
1 F
0.43 (The \336le system is implemented under vnodes, possibly extended from the current ones. Other) 85.75 96 P
0.88 (\336le systems \050excluding EFS\051 in IRIX continue to run with little or no implementation ef) 85.75 82 P
0.88 (fort.) 519.68 82 P
(EFS must continue to run, but may have impaired performance.) 85.75 68 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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(4) 500 42.62 T
3 12 Q
(\245) 72 712 T
1 F
-0.11 (File system is implemented as a journalled \336le system. This is implied by the requirement for a) 85.75 712 P
(small recovery time for lar) 85.75 698 T
(ge \336lesystems.) 213.43 698 T
3 F
(\245) 72 678 T
1 F
-0.06 (May be implemented using message passing and kernel threads. The former allows later distri-) 85.75 678 P
-0.09 (bution in a network, but costs some performance in the local case. The latter may allow greater) 85.75 664 P
(ease of implementation.) 85.75 650 T
3 F
(\245) 72 630 T
1 F
-0.19 (Implement so that a user) 85.75 630 P
-0.19 (-mode simulation of the \336le system is functional and usable for debug-) 202.66 630 P
(ging and performance modelling.) 85.75 616 T
3 F
(\245) 72 596 T
1 F
0.47 (Support lar) 85.75 596 P
0.47 (ge, sparse \336les using a B-tree as the index to the data blocks, replacing the current) 139.63 596 P
0.58 (direct and indirect blocks scheme. This makes the performance of these \336les acceptable. Any) 85.75 582 P
(equivalent index scheme will do as well.) 85.75 568 T
3 F
(\245) 72 548 T
1 F
1.89 (Delay allocation of user data blocks when possible to make blocks more contiguous. This) 85.75 548 P
0.67 (allows us to make extents lar) 85.75 534 P
0.67 (ge without requiring the user to specify extent size, and without) 227.81 534 P
(requiring a \336le system reor) 85.75 520 T
(ganizer to \336x the extent sizes up after the fact.) 214.78 520 T
3 F
(\245) 72 500 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 500 P
(block and the time to read it.) 85.75 486 T
3 F
(\245) 72 466 T
1 F
0.89 (Support directories with some form of indexed structure, so that searches are faster for lar) 85.75 466 P
0.89 (ge) 528.68 466 P
(directories. Some form of B-tree will work.) 85.75 452 T
2 F
(2.2.2  V) 72 420 T
(olume Manager Requir) 109.54 420 T
(ements) 229.25 420 T
1 F
-0.25 (A volume manager is an integral part of the next generation \336le system. The volume manager pro-) 72 394 P
-0.19 (vides an operational interface to the system\325) 72 380 P
-0.19 (s disks and isolates the higher layers of the \336le system) 282.05 380 P
(from the details of the hardware.) 72 366 T
2 F
(2.2.2.1  V) 72 334 T
(olume manager functionality) 118.53 334 T
3 F
(\245) 72 314 T
1 F
0.4 (Auto-assembly of logical volumes. The volume manager will be able to assemble logical vol-) 85.75 314 P
(umes by scanning the hardware on the system and reading all the disk labels.) 85.75 300 T
3 F
(\245) 72 280 T
1 F
1.5 (Mirroring \050plexing\051 of storage. Flexibility is required, we do not want to require duplexing) 85.75 280 P
(entire disks, or limiting to two plexes.) 85.75 266 T
3 F
(\245) 72 246 T
1 F
(Disk striping. Required for performance on lar) 85.75 246 T
(ge systems.) 309.03 246 T
3 F
(\245) 72 226 T
1 F
0.44 (Concatenation of storage sections. Should be able to build arbitrarily lar) 85.75 226 P
0.44 (ge volumes, up to the) 435.32 226 P
(64 bit limit.) 85.75 212 T
3 F
(\245) 72 192 T
1 F
0.9 (On-line con\336guration changes. The volume manager will support the restructuring of logical) 85.75 192 P
0.04 (volumes \050e.g., adding a new plex, growing, shrinking\051, without requiring the volume to be dis-) 85.75 178 P
(mounted.) 85.75 164 T
3 F
(\245) 72 144 T
1 F
1.23 (Separate logging, data and unreliable sub-volumes. Logging sub-volumes are needed by the) 85.75 144 P
1.32 (\336le system. Unreliable sub-volumes are needed by multimedia \336le systems. Each should be) 85.75 130 P
(sized and or) 85.75 116 T
(ganized independently in its portion of the volume.) 143.49 116 T
3 F
(\245) 72 96 T
1 F
1.41 (High throughput for \336le server applications. The performance penalty for using the volume) 85.75 96 P
(manager should be vanishingly small in normal operation.) 85.75 82 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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(5) 500 42.62 T
3 12 Q
(\245) 72 712 T
1 F
0.42 (Support of RAID devices at their full performance. Implies lar) 85.75 712 P
0.42 (ge transfers generated from the) 389.11 712 P
(\336le system code, through the volume manager) 85.75 698 T
(, down to the RAID driver) 306.79 698 T
(.) 432.71 698 T
3 F
(\245) 72 678 T
1 F
0.94 (Support of RAID in software, as opposed to purely hardware RAID implementations, which) 85.75 678 P
(appear to the system as lar) 85.75 664 T
(ge disks.) 212.44 664 T
3 F
(\245) 72 644 T
1 F
(Fast, guaranteed response time for digital media and other real-time applications.) 85.75 644 T
3 F
(\245) 72 624 T
1 F
-0.16 (Support multiple logical sector sizes \050one per volume\051. This supports the equivalent \336le system) 85.75 624 P
(requirement.) 85.75 610 T
3 F
(\245) 72 590 T
1 F
-0.23 (The new and old volume managers \050lv) 85.75 590 P
-0.23 (, not V) 268.13 590 P
-0.23 (eritas\051 must be able to run in the same system. It is) 299.33 590 P
3.46 (not a requirement to run a V) 85.75 576 P
3.46 (eritas volume in the same system. This allows a gradual) 241.06 576 P
1.23 (changeover to the new \336le system and volume manager) 85.75 562 P
1.23 (, since the only way to convert data) 361.55 562 P
(from EFS to xFS is to dump and restore it.) 85.75 548 T
3 F
(\245) 72 528 T
1 F
0.54 (EFS and non \336le system applications must be able to run on top of the new volume manager) 85.75 528 P
0.54 (.) 537 528 P
(Ordinary driver interfaces must be presented to these clients, even if xFS doesn\325) 85.75 514 T
(t use them.) 470.25 514 T
3 F
(\245) 72 494 T
1 F
0.18 (Provide for future support of multiple-access \050dual-ported\051 disk controllers. Necessary for real) 85.75 494 P
(high-availability applications.) 85.75 480 T
3 F
(\245) 72 460 T
1 F
(Provide for future dynamic relocation of control for a volume. Necessary for high availability) 85.75 460 T
(.) 533.96 460 T
2 F
(2.2.2.2  V) 72 428 T
(olume manager implementation) 118.53 428 T
3 F
(\245) 72 408 T
1 F
1.68 (The volume manager will store all con\336guration data on the disk labels themselves. These) 85.75 408 P
1.29 (labels will be replicated so that a logical volume can be assembled even if some pieces are) 85.75 394 P
(missing.) 85.75 380 T
3 F
(\245) 72 360 T
1 F
0.23 (W) 85.75 360 P
0.23 (rite-logging \050on disk\051 of blocks that will be changed to reduce the need for plex copies after) 96.59 360 P
(a system restarts after a crash.) 85.75 346 T
3 F
(\245) 72 326 T
1 F
0.3 (Logging of written blocks \050in memory\051 when volume is incomplete. Necessary for high avail-) 85.75 326 P
(ability \050fast recovery from a disk failure\051.) 85.75 312 T
3 F
(\245) 72 292 T
1 F
-0.12 (A reduced functionality) 85.75 292 P
4 F
-0.12 (lightweight) 202.3 292 P
1 F
-0.12 (volume manager may be produced for smaller system con-) 259.16 292 P
-0.28 (\336gurations. This volume manager would support only concatenation, plexing, strping, and soft-) 85.75 278 P
2.57 (ware RAID. Disk media will be completely compatible between the full and lightweight) 85.75 264 P
(volume manager implementations.) 85.75 250 T
2 K
([Geof) 254.98 250 T
(f: what is left out?]) 282.73 250 T
2 F
0 K
(2.2.3  Buffer cache and virtual memory support) 72 218 T
3 F
(\245) 72 198 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 198 P
(is required to ensure consistency in a journalled \336le system.) 85.75 184 T
2 14 Q
(2.3  Possible r) 72 150.67 T
(equir) 154.15 150.67 T
(ements) 185.77 150.67 T
3 12 Q
(\245) 72 130 T
1 F
-0.01 (Support DFS vnode interfaces. This will wait until we \336gure out what is happening with DFS.) 85.75 130 P
3 F
(\245) 72 110 T
1 F
0.56 (W) 85.75 110 P
0.56 (e may need to allow the user to ensure that their \336les are contiguous, implying that there is) 96.11 110 P
(some way to display layout information, and some way to make a \336le contiguous.) 85.75 96 T
3 F
(\245) 72 76 T
1 F
(W) 85.75 76 T
(e may need a \336le system reor) 96.11 76 T
(ganizer program, to improve \336le contiguity in the background.) 235.78 76 T
FMENDPAGE
%%EndPage: "5" 6
%%Page: "6" 6
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(6) 500 42.62 T
2 16 Q
(3.0   Design Overview) 72 709.33 T
2 14 Q
(3.1  xFS File System) 72 674.67 T
1 12 Q
0.45 (The xFS \336le system is a) 72 648 P
2 F
0.45 (journalled) 192.66 648 P
1 F
0.45 ( \336le system. This means that updates to \336le system metadata) 245.97 648 P
0.44 (\050inodes, directories, bitmaps, etc.\051 are written to a serial log area on disk before the original disk) 72 634 P
1.38 (blocks are updated in place. In the event of a crash, such operations can be redone or undone) 72 620 P
0.48 (using data present in the log, to restore the \336le system to a consistent state. This implementation) 72 606 P
0.31 (technique replaces the use of a \336le system check and repair program \050fsck\051 before mounting \336le-) 72 592 P
1 (systems that were active when a system crash occurred. Since a full \336le system check takes an) 72 578 P
-0.26 (amount of time proportional to the size of the \336le system, we must avoid it to meet our availability) 72 564 P
(goals. Therefore, we choose the logging mechanism for our implementation.) 72 550 T
2 14 Q
(3.2  xFS V) 72 516.67 T
(olume Manager) 132.12 516.67 T
1 12 Q
1.39 (The xFS volume manager \050also known as xlv\051 is intended to replace both the IRIS lv volume) 72 490 P
0.78 (manager and the V) 72 476 P
0.78 (eritas V) 163.93 476 P
0.78 (olume Manager products. Xlv creates an abstraction of a sequence of) 200.8 476 P
0.26 (logical disk blocks to be used by the xFS \336le system. The sequence of disk blocks can be assem-) 72 462 P
2.14 (bled by concatenating, plexing \050copying\051, and striping \050including RAID\051 across a number of) 72 448 P
(physical disk drives. Xlv ensures that plexed data is kept consistent across all plexes.) 72 434 T
2 14 Q
(3.3  xFS Gr) 72 400.67 T
(owth Path) 140.16 400.67 T
1 12 Q
0.13 (In the long run, we expect to add user) 72 374 P
0.13 (-level transactions to the \336le system, at which time selected) 253.67 374 P
-0.08 (user data will be logged along with the \336lesystem metadata. This feature will make it practical for) 72 360 P
0.4 (user applications to easily implement databases and database-like systems on top of this \336le sys-) 72 346 P
(tem.) 72 332 T
0.31 (The other major future change anticipated is that the \336le system will be distributed over multiple) 72 306 P
1.26 (computers \050referred to as nodes\051, connected by a fast local area network. This technology will) 72 292 P
0.8 (allow us to provide high availability to user data in the event of failure of a node. For instance,) 72 278 P
0.21 (nodes might share disk controllers via multiporting, where only one node at a time uses the disks) 72 264 P
-0.24 (attached to the controller) 72 250 P
-0.24 (. T) 190.18 250 P
-0.24 (o achieve consistent operation, the nodes must communicate with each) 202.43 250 P
(other) 72 236 T
(.) 95.99 236 T
0.14 (In order to achieve transparent high availability in such an environment, \336le system naming must) 72 210 P
0.29 (be location independent: a \336le\325) 72 196 P
0.29 (s name must be the same no matter where it is being named from,) 221.07 196 P
(or which machine has mounted the \336le system containing it.) 72 182 T
0.03 (The \336rst release will have neither the distributed capabilities nor transactions, but the architecture) 72 156 P
1 (is designed to accommodate both. The intent is to make future additions to the implementation) 72 142 P
(easier to do by putting a little more ef) 72 128 T
(fort in up front.) 252.33 128 T
FMENDPAGE
%%EndPage: "6" 7
%%Page: "7" 7
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(7) 500 42.62 T
2 16 Q
(4.0   The Big Pictur) 72 709.33 T
(e) 204.09 709.33 T
1 12 Q
(The following is the current architectural diagram for the xFS project.) 72 682 T
2 10 Q
(FIGURE 1. xFS Ar) 85.75 657.33 T
(chitectural Diagram) 167.74 657.33 T
1 12 Q
0.57 (The structure of xFS is similar to that of a conventional \336le system with the addition of the vol-) 72 294 P
0.12 (ume manager between the disk drivers and the \336le system code and the log manager) 72 280 P
0.12 (. The follow-) 476.8 280 P
(ing sections describe the functionality of each component in the architectural diagram.) 72 266 T
2 16 Q
(5.0   System Call and Vnode Interfaces) 72 225.33 T
1 12 Q
0.02 (The \336le system related calls are implemented here: read, write, open, ioctl, etc., for all \336le system) 72 198 P
0.17 (types. The operations are then vectored out to dif) 72 184 P
0.17 (ferent routines for each \336le system type through) 308.64 184 P
(the vnode interfaces.) 72 170 T
0.43 (Both 32-bit and 64-bit interfaces are supported, where those are supported by the underlying OS) 72 144 P
1.66 (and hardware. The semantics of 32-bit applications operating naively on \336les longer than 2) 72 130 P
1 10 Q
1.39 (32) 530.01 134.8 P
1 12 Q
(bytes are de\336ned in the paper \32264 Bit File Access\323.) 72 116 T
2.24 (The vnode interfaces also allow interoperation with remote clients such as NFS. In a future) 72 90 P
(release the vnode interface may be expanded to support DFS semantics.) 72 76 T
72 63 540 720 C
93 318 519 654 C
219 382.74 408 411.17 R
7 X
0 K
V
0.5 H
0 Z
0 X
N
318 573 408 573 408 465.17 381 465.17 381 546 318 546 6 Y
7 X
V
0 X
N
255 537.17 372 537.17 372 465.17 345 465.17 345 510.17 255 510.17 255 519.17 7 Y
7 X
V
0 X
N
255 501.17 336 501.17 336 465.17 255 465.17 4 Y
7 X
V
0 X
N
267 477 325.44 489.92 R
7 X
V
5 9 Q
0 X
(Log Manager) 267 482.92 T
267 477 325.44 489.92 R
7 X
N
219 420.17 408 458.86 R
V
0 X
N
291 429.17 349.32 442.94 R
7 X
V
0 X
(Buf) 291 435.94 T
(fer Cache) 304.33 435.94 T
291 429.17 349.32 442.94 R
7 X
N
282 390.17 368.22 402.17 R
V
0 X
(V) 282 395.17 T
(olume Manager) 287.5 395.17 T
282 390.17 368.22 402.17 R
7 X
N
426 509.72 480 546.17 R
V
426 509.72 480 546.17 R
0 X
N
259.1 339 368.44 375.45 R
7 X
V
0 X
N
286.5 351.17 340.5 363.17 R
7 X
V
0 X
(Disk Drivers) 286.5 355.17 T
286.5 351.17 340.5 363.17 R
7 X
N
135.17 382.74 164.33 600.17 R
V
0 X
N
146.21 389.32 159.75 587.03 R
7 X
V
0 X
(A) 146.21 535.03 T
(d) 146.21 512.03 T
(m) 146.21 489.03 T
(i) 146.21 466.03 T
(n) 146.21 443.03 T
146.21 389.32 159.75 587.03 R
7 X
N
213.81 405.03 218.99 402.01 213.79 399.03 213.8 402.03 4 Y
0 X
V
165 402.17 213.8 402.02 2 L
7 X
V
2 Z
0 X
N
213.8 504.17 219 501.17 213.8 498.17 213.8 501.17 4 Y
V
165 501.17 213.8 501.17 2 L
7 X
V
0 X
N
213.79 566.99 218.99 564.01 213.81 560.99 213.8 563.99 4 Y
V
165 563.83 213.8 563.98 2 L
7 X
V
0 X
N
99 321 513 645 R
3 H
0 Z
N
(Lock Mgr) 434.79 525.64 T
278.94 516.17 345 528.17 R
7 X
V
0 X
(Space Manager) 278.94 520.17 T
278.94 516.17 345 528.17 R
0.5 H
7 X
N
300 573.17 219 573.17 219 465.17 246 465.17 246 546.17 300 546.17 6 Y
V
0 X
N
228 552.17 282 564.17 R
7 X
V
0 X
(Attribute Mgr) 228 557.17 T
228 552.17 282 564.17 R
7 X
N
312 542.2 309 537 306 542.2 309 542.2 4 Y
0 X
V
309 600 309 542.2 2 L
7 X
V
2 Z
0 X
N
375 578.37 372 573.17 369 578.37 372 578.37 4 Y
V
372 600.17 372 578.37 2 L
7 X
V
0 X
N
267 578.37 264 573.17 261 578.37 264 578.37 4 Y
V
264 600.17 264 578.37 2 L
7 X
V
0 X
N
150 605.37 147 600.17 144 605.37 147 605.37 4 Y
V
219 618.17 147 618.17 147 605.37 3 L
N
456 551.37 453 546.17 450 551.37 453 551.37 4 Y
V
408 618.17 453 618.17 453 551.37 3 L
N
413.2 435.17 408 438.17 413.2 441.17 413.2 438.17 4 Y
V
453 510.17 453 438.17 413.2 438.17 3 L
N
348 578.37 345 573.17 342 578.37 345 578.37 4 Y
V
165 591 345 591 345 578.37 3 L
N
219 600 408 627 R
0 Z
N
237 606.66 390 618 R
7 X
V
0 X
(System Call and VNODE Interface) 237 611 T
237 606.66 390 618 R
7 X
N
249.8 486 255 483 249.8 480 249.8 483 4 Y
0 X
V
165 483 249.8 483 2 L
7 X
V
2 Z
0 X
N
249.8 531 255 528 249.8 525 249.8 528 4 Y
V
165 528 249.8 528 2 L
7 X
V
0 X
N
327 552 399 564 R
7 X
V
0 X
(NameSpace Mgr) 327 557 T
327 552 399 564 R
0 Z
7 X
N
72 63 540 720 C
0 0 612 792 C
FMENDPAGE
%%EndPage: "7" 8
%%Page: "8" 8
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(8) 500 42.62 T
1 12 Q
1.49 (When xFS is distributed, references to remote \336les will come through the vnode layer and be) 72 712 P
0.7 (turned into messages if the references cannot be satis\336ed locally) 72 698 P
0.7 (. On receipt of a distributed \336le) 385.59 698 P
0.37 (system request message, the node owning the \336le system will send a call through its vnode layer) 72 684 P
(to get data in and out of the \336le system.) 72 670 T
0 (There will be new system call and vnode operations to support Hierarchical Storage Management) 72 644 P
0.25 (\050HSM\051 and backup applications; these are currently being designed by an industry-wide working) 72 630 P
(group \050DMIG, Data Management Interfaces Group\051.) 72 616 T
1.24 (There will also be new system call and vnode operations to support extended attributes. There) 72 590 P
0.25 (may be a standard proposed for the system call interfaces for these soon, but in all likelihood not) 72 576 P
0.04 (before we must ship to customers. One possibility is that we will tell internal customers and ISVs) 72 562 P
0.38 (about the new interfaces, with the caveat that they will be replaced with POSIX-compliant inter-) 72 548 P
-0.23 (faces when those exist. Another possibility is that both sets of interfaces will be supported, one set) 72 534 P
(as a library built on the other set.) 72 520 T
2 16 Q
(6.0  Lock Manager) 72 479.33 T
1 12 Q
0.08 (The lock manager implements locking on user \336les \050fcntl and \337ock calls\051. For the \336rst release the) 72 452 P
0.67 (lock manager is identical to the current implementation. The performance in the non-distributed) 72 438 P
(case must be no worse than that of the current EFS implementation.) 72 424 T
1.36 (In the future, user transactions and distributed locking will be supported. These will cause the) 72 398 P
0.28 (lock manager implementation to expand in size and complexity) 72 384 P
0.28 (. A distributed two-phase commit) 377.96 384 P
0.31 (protocol will be implemented to allow transactions in the distributed system. Also, some form of) 72 370 P
(distributed deadlock detection will be implemented, possibly using timeouts.) 72 356 T
2 16 Q
(7.0  NameSpace Manager) 72 315.33 T
1 12 Q
1.13 (The namespace manager implements \336le system naming operations, translating pathnames into) 72 288 P
0.4 (\336le references. A \336le is identi\336ed internal to the \336le system by its \336le system and its inode num-) 72 274 P
0.5 (ber) 72 260 P
0.5 (. The inode is the on-disk structure which holds information about a \336le; the inode number is) 86.66 260 P
0.92 (the label \050or index\051 of the inode within the particular \336le system. Files are also identi\336ed inter-) 72 246 P
(nally by a numeric value unique to the \336le, called the \336le unique id.) 72 232 T
-0.04 (File systems may be identi\336ed either by a \322magic cookie\323, typically a memory address of the root) 72 206 P
0.46 (inode, or by a \336le system unique id. File system unique id\325) 72 192 P
0.46 (s are assigned when the \336le system is) 357.9 192 P
1.31 (created and are associated uniquely with that \336le system until the \336le system is destroyed. An) 72 178 P
0.14 (additional temporary unique id, the \336le system I/O unique id, is created whenever a \336le system is) 72 164 P
-0.04 (mounted, and is valid only for the duration of the mount. The \336le system I/O unique id is used for) 72 150 P
(dynamic recon\336guration in the distributed version of xFS.) 72 136 T
0.79 (The namespace manager manages the directory structures and the contents of the inode that are) 72 110 P
1.36 (unrelated to space management, such as \336le permissions and timestamps. Requests from other) 72 96 P
0.69 (systems via NFS come into the system with a) 72 82 P
4 F
0.69 (\336le handle) 299.05 82 P
1 F
0.69 ( which the namespace manager uses to) 350.04 82 P
0.55 (\336nd the inode. The) 72 68 P
0.55 (\336le handle) 167.82 68 P
0.55 (includes enough information to deduce the \336le system, the inode,) 222.22 68 P
FMENDPAGE
%%EndPage: "8" 9
%%Page: "9" 9
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(9) 500 42.62 T
1 12 Q
-0.15 (and which version of the \336le is meant \050inodes may be reused\051. Requests from other nodes in a dis-) 72 712 P
1.14 (tributed xFS \336le system would enter with a \336le system unique id and inode number) 72 698 P
1.14 (, and a \336le) 486.61 698 P
(unique id, and be validated at this level \050to see that the two forms of identi\336cation match\051.) 72 684 T
1.49 (The namespace manager may have a cache to speed up naming operations. The details of the) 72 658 P
(name translation are hidden from the callers.) 72 644 T
1.58 (In the distributed system, we have yet to decide whether the distributed nature of the naming) 72 618 P
0.99 (should be transparent \050single system view\051 or visible \050multiple system view\051. \050Indeed, dif) 72 604 P
0.99 (ferent) 512.03 604 P
-0.05 (sites may prefer one model over the other) 72 590 P
-0.05 (, or some customer might even want both models within) 270.65 590 P
0.17 (a single installation.\051 The issue is whether or not it is necessary to know what machine is manag-) 72 576 P
0.96 (ing a \336le system to name a \336le within the \336le system. If the machine name is embedded in the) 72 562 P
0.38 (pathname \050as in DFS, for example\051 then the machine controlling access to the \336le system cannot) 72 548 P
-0.19 (change without clients being aware of the change. If the machine name is not in the pathname, but) 72 534 P
1.04 (rather the \336le system can move easily from machine to machine, and the \336le system name and) 72 520 P
0.17 (location is broadcast when it moves, then this can change without knowledge of user or user pro-) 72 506 P
(grams.) 72 492 T
0.02 (The current design of the namespace manager) 72 466 P
0.02 (\325) 293.02 466 P
0.02 (s mount semantics have a \336le system node called a) 296.35 466 P
4 F
1.92 (mount point) 72 452 P
1 F
1.92 ( which replaces the empty-directory mount points of the current \336le system. The) 131.56 452 P
0.33 (mount point node contains a \336le system unique id. When a mount point which refers to a remote) 72 438 P
1.04 (\336le system is encountered during a naming operation, a message is sent to the remote machine) 72 424 P
0.18 (which is managing the \336le system with that \336le system unique id, along with the naming request,) 72 410 P
(to complete the operation.) 72 396 T
1.11 (It is possible that alternate or extended naming schemes may be implemented in user mode by) 72 370 P
0.02 (allowing the entity at the other end of the message queue to be a program. This will not be imple-) 72 356 P
(mented in the \336rst release of the system.) 72 342 T
2 16 Q
(8.0  Attribute Manager) 72 301.33 T
1 12 Q
-0.12 (The attribute manager implements \336le system attribute operations: storing and retrieving arbitrary) 72 274 P
0.93 (user) 72 260 P
0.93 (-de\336ned attributes associated with objects in the namespace. Arbitrary attributes are \050name,) 91.74 260 P
1.22 (value\051 pairs where the name is a printable string and the value is a smallish string of arbitrary) 72 246 P
0.96 (bytes. Attributes may be controlled either by user applications or by the kernel \050ACLs, T) 72 232 P
0.96 (rusted) 510.69 232 P
0.14 (IRIX attributes\051. Certain attributes are pre-de\336ned by the system and may be accessed using both) 72 218 P
0.19 (existing UNIX interfaces and the new attribute access system calls. \050For example: \336le access and) 72 204 P
3 (modi\336cation times.\051 The system call interfaces for controlling attributes have not yet been) 72 190 P
(de\336ned.) 72 176 T
0.17 (An attribute is stored internally by attaching it to the inode of the referenced object. The attribute) 72 150 P
0.74 (manager manages the attribute structures that are associated with inodes. However) 72 136 P
0.74 (, the attribute) 474.9 136 P
0.4 (manager does not manage those \336elds which are handled by the namespace manager such as \336le) 72 122 P
(permissions and timestamps.) 72 108 T
0.87 (No storage for arbitrary attributes is allocated when an object is created, and any attributes that) 72 82 P
0.05 (exist when an object is destroyed are destroyed as well. Attributes are not shared between inodes.) 72 68 P
FMENDPAGE
%%EndPage: "9" 10
%%Page: "10" 10
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(10) 496 42.62 T
1 12 Q
2.13 (Access control lists are handled as a special case of attributes; these can be shared between) 72 712 P
0.58 (inodes. There will be no method faster than the equivalent of a) 72 698 P
6 F
0.58 (\336nd) 382.38 698 P
1 F
0.58 ( to locate all the objects in a) 401.71 698 P
(\336lesystem that have certain attributes or attribute values.) 72 684 T
-0.16 (Some system utility programs will be modi\336ed to know about attributes, for example) 72 658 P
6 F
-0.16 (cp) 481.02 658 P
1 F
-0.16 ( will copy) 492.35 658 P
1.23 (selected attributes of a \336le when it copies the \336le. The system backup utility will back up and) 72 644 P
(restore the attributes of an object when that object is backed up or restored.) 72 630 T
-0.05 (Standard NFS does not support attributes beyond the traditional UNIX set, so these attributes will) 72 604 P
0.77 (not be visible in any way to a client that is accessing an xFS \336lesystem via standard NFS. NFS) 72 590 P
(mounted \336le systems will continue to operate as if this feature did not exist.) 72 576 T
0.53 (SGI has an extended version of the NFS protocol that it can speak with other SGI systems. This) 72 550 P
0.82 (version may be extended to know about attributes if the distributed system implementation will) 72 536 P
(not be ready in time for the majority of customers of attributes.) 72 522 T
0.69 (For the distributed system case, using the xFS internal protocols, attributes will be accessible in) 72 496 P
1.87 (just the same way that other \336lesystem objects are accessible. There should be no dif) 72 482 P
1.87 (ference) 504.71 482 P
0.26 (between accessing attributes on an object that is managed locally from accessing attributes on an) 72 468 P
(object that is managed remotely) 72 454 T
(.) 224.45 454 T
2 16 Q
(9.0  Space Manager) 72 413.33 T
1 12 Q
0.08 (The space manager manages the allocation of disk space within a \336le system. It is responsible for) 72 386 P
0.45 (mapping a \336le \050a sequence of bytes\051 into a sequence of disk blocks. The internal structure of the) 72 372 P
0.41 (\336le system - allocation \050cylinder\051 groups, inodes, and free space management - are controlled by) 72 358 P
(the space manager) 72 344 T
(, as well as the above mapping function.) 160.1 344 T
0.81 (The space layout choices in the design are in\337uenced by the requirements to support very lar) 72 318 P
0.81 (ge) 528.68 318 P
-0.16 (\336les and \336le systems ef) 72 304 P
-0.16 (\336ciently) 183.08 304 P
-0.16 (, including the possibility of sparse 64 bit \336les. The space manager) 221.62 304 P
0.23 (is also responsible for optimizing the layout of blocks in a \336le to avoid seeking during sequential) 72 290 P
-0.14 (processing, and keeping related \336les \050those in the same directory\051 close to each other on the disks.) 72 276 P
1.42 (Each \336le system is divided into log, metadata, data, and real-time sub-volumes. Normally) 72 250 P
1.42 (, the) 517.93 250 P
1.02 (data sub-volume and the real-time sub-volume do not exist. If the data sub-volume exists, then) 72 236 P
0.09 (ordinary user data is stored in it, otherwise in the metadata sub-volume. Data blocks for real-time) 72 222 P
1.48 (\336les are stored in the real-time sub-volume, if it exists, otherwise in the data sub-volume if it) 72 208 P
0.69 (exists, otherwise in the metadata sub-volume. All \336le system data is stored in the log and meta-) 72 194 P
(data sub-volumes.) 72 180 T
0.05 (The space manager divides each \336le system metadata and data sub-volume into a number of) 72 154 P
4 F
0.05 (allo-) 517.34 154 P
0.54 (cation gr) 72 140 P
0.54 (oups) 115.74 140 P
1 F
0.54 (. When the data sub-volume exists, the allocation group contains blocks from both) 138.4 140 P
1.43 (the metadata and data sub-volumes. Each allocation group has a collection of inodes and data) 72 126 P
0.41 (blocks, and data structures to control their allocation. The blocks containing inodes are allocated) 72 112 P
0.64 (dynamically from the data block pool, to permit more ef) 72 98 P
0.64 (\336cient use of disk space. Knowledge of) 347.32 98 P
0.21 (the location of the sequence of inode blocks for an allocation group is kept the same way it is for) 72 84 P
(ordinary \336les \050in a B-tree\051.) 72 70 T
FMENDPAGE
%%EndPage: "10" 11
%%Page: "11" 11
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(1) 496.44 42.62 T
(1) 500 42.62 T
1 12 Q
-0.07 (Free blocks in an allocation group are kept track of via one of two schemes. The \336rst scheme uses) 72 712 P
1.09 (a bitmap and a set of counters or) 72 698 P
1.09 (ganized by starting bitmap block and the log) 235.6 698 P
1 10 Q
0.9 (2) 456.73 695 P
1 12 Q
1.09 ( size of the free) 461.73 698 P
0.13 (extent. The second scheme uses a pair of B-trees, one indexed by size of the free extent \050and sec-) 72 684 P
1.44 (ondarily by the starting block\051, the other indexed by the starting block of the free extent. The) 72 670 P
0.03 (scheme to be used will be chosen later) 72 656 P
0.03 (, after both methods have been prototyped and their perfor-) 255.94 656 P
(mance analyzed.) 72 642 T
1.26 (The real-time sub-volume is divided into a number of \336xed-size extents. The size is chosen at) 72 616 P
2 F
0.09 (mkfs) 72 602 P
1 F
0.09 ( time; it is expected to be lar) 97.32 602 P
0.09 (ge \050say on the order of 1MByte\051. The size does not have to be a) 233.98 602 P
0.4 (power of two, just a multiple of the \336le system block size; it should be the ideal I/O size for that) 72 588 P
0.22 (volume con\336guration, or a multiple of it. A single extent in the metadata sub-volume contains an) 72 574 P
1.03 (allocation bitmap for the real-time sub-volume extents; another extent contains summary infor-) 72 560 P
0.71 (mation per bitmap block \050number of free extents\051. This alternate method of allocation is chosen) 72 546 P
0.31 (for the real-time sub-volume due to the improved performance possible because of the \336xed-size) 72 532 P
(extents.) 72 518 T
0.53 (Storage for \336les is represented in one of three ways, depending on the size and contiguity of the) 72 492 P
0.1 (\336le. For small \336les, the data in the \336le is stored in the inode. For medium \336les, the inode contains) 72 478 P
-0.23 (pointers to extents containing the \336le data. For lar) 72 464 P
-0.23 (ge \336les, the inode contains the root block of a B-) 308.79 464 P
0.37 (tree indexed by logical position in the \336le, where the records point to disk extents containing the) 72 450 P
1.34 (\336le data. This storage structure allows for lar) 72 436 P
1.34 (ge fragmented and lar) 296.34 436 P
1.34 (ge sparse \336les to be imple-) 405.05 436 P
(mented ef) 72 422 T
(\336ciently) 119.41 422 T
(, at the cost of some overhead to manage the B-tree indices.) 157.95 422 T
-0.29 (An active \336le system may be extended by adding more space to the underlying volume. This oper-) 72 396 P
0.49 (ation is supported on-line by the space manager) 72 382 P
0.49 (, which receives a request to expand the \336le sys-) 303.78 382 P
(tem and updates on-disk and in-memory structures to implement it.) 72 368 T
0.93 (In a future implementation it may be required to support splitting the control of space manage-) 72 342 P
0.31 (ment in a single \336le system over multiple nodes of the system. There will be no ef) 72 328 P
0.31 (fort in the \336rst) 470.12 328 P
(implementation to take this into account.) 72 314 T
2 16 Q
(10.0   Log Manager) 72 273.33 T
1 12 Q
-0.22 (All changes to \336le system metadata \050inodes, directories, bitmaps, etc.\051 are serially logged to a sep-) 72 246 P
-0.17 (arate area of the disk space. There is a separate log for each \336le system. The log allows fast recon-) 72 232 P
2.79 (struction of a consistent and correct \336le system \050recovery\051 if a crash intervenes before the) 72 218 P
0.07 (metadata blocks are written to disk. The log space is allocated independently from the \336le system) 72 204 P
0.14 (space for safety; this separation is managed by the underlying volume manager) 72 190 P
0.14 (. The log manager) 452.3 190 P
0.31 (utilizes information provided by the space manager to control the sequencing of write operations) 72 176 P
0.17 (from the buf) 72 162 P
0.17 (fer cache, since speci\336c log writes must be sequenced before or after data operations) 132.09 162 P
(for correctness if there is a crash.) 72 148 T
0.14 (The space and name manager subsystems send logging requests to the log manager) 72 122 P
0.14 (. Each request) 472.11 122 P
1.18 (may \336ll a partial log block or multiple blocks of the log. The log is implemented as a circular) 72 108 P
1.13 (sequential list which wraps when writes reach the end. Each log entry contains a log sequence) 72 94 P
0.27 (number) 72 80 P
0.27 (, so that the end of the log may be found by looking for the highest sequence number) 108.16 80 P
0.27 (. On) 519.08 80 P
FMENDPAGE
%%EndPage: "11" 12
%%Page: "12" 12
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(12) 496 42.62 T
1 12 Q
1.12 (plexed volumes, the buf) 72 712 P
1.12 (fer cache is also responsible for inserting log records for non-metadata) 190.4 712 P
0.7 (blocks, so that the volume manager) 72 698 P
0.7 (\325) 245.82 698 P
0.7 (s write-change log does not need to be used by the \336le sys-) 249.15 698 P
0.65 (tem. This allows the system to keep the plexes of a volume synchronized with each other in the) 72 684 P
(event of a crash between writes.) 72 670 T
0.16 (After a crash, the log must be recovered before the \336le system can be used. Operations which are) 72 644 P
0.49 (recorded and are complete in the log but are not yet stored in the data area of the \336le system are) 72 630 P
0.35 (re-done so that the \336le system data re\337ects a correct and consistent state. The log manager) 72 616 P
0.35 (\325) 510 616 P
0.35 (s role) 513.34 616 P
0.14 (in this is to identify the log records and to call other pieces of the \336le system to perform recovery) 72 602 P
(operations.) 72 588 T
0.95 (Log operations are blocked together to get higher throughput on the log portion of the volume.) 72 562 P
0.46 (The block is called a log record. T) 72 548 P
0.46 (ypically) 238.95 548 P
0.46 (, log records are written asynchronously; the log man-) 276.81 548 P
0.83 (ager can be directed by higher levels of the system to force writing of the current log record as) 72 534 P
(soon as possible. A given log write cannot be started until the previous one \336nishes.) 72 520 T
2 16 Q
(1) 72 479.33 T
(1.0   Buffer Cache) 79.12 479.33 T
1 12 Q
0.38 (The buf) 72 452 P
0.38 (fer cache is a cache of disk blocks for the various \336le systems local to a machine \050node\051.) 109.8 452 P
1.15 (Read requests may be satis\336ed from the buf) 72 438 P
1.15 (fer cache; write requests may write into the cache.) 290.01 438 P
0.38 (Cache entries are \337ushed when new entries are needed, in an order which takes into account fre-) 72 424 P
0.16 (quency \050or recency\051 of use, and \336le system semantics. File system metadata as well as \336le data is) 72 410 P
-0.14 (stored in the buf) 72 396 P
-0.14 (fer cache. User requests may bypass the cache by setting \337ags \050O_DIRECT\051; oth-) 149.65 396 P
(erwise all \336le system I/O goes through the cache.) 72 382 T
1.39 (The current buf) 72 356 P
1.39 (fer cache interfaces will be extended in two ways. First, 64-bit versions of the) 149.17 356 P
0.59 (interfaces will be added to support xFS\325) 72 342 P
0.59 (s 64-bit \336le sizes. Second, a transaction mechanism will) 266.77 342 P
0.76 (be provided. This will allow buf) 72 328 P
0.76 (fer cache clients to collect and modify buf) 230.17 328 P
0.76 (fers during an opera-) 437.47 328 P
0.21 (tion, send the changed buf) 72 314 P
0.21 (fers to the log manager) 198.85 314 P
0.21 (, and release all the buf) 309.77 314 P
0.21 (fers after successful log-) 421.82 314 P
(ging.) 72 300 T
-0.09 (In the future distributed system, a buf) 72 274 P
-0.09 (fer cache will hold data for \336lesystems remote to a machine.) 251.46 274 P
2 16 Q
(12.0  Guaranteed Rate I/O) 72 233.33 T
1 12 Q
-0.24 (xFS will support digital media applications with a guaranteed rate I/O mechanism. This will allow) 72 206 P
0.75 (applications to specify \322real-time\323 guarantees for the rate at which they can read or write a \336le.) 72 192 P
-0.07 (The application will specify a rate of X bytes per Y seconds for a given \336le, possibly beginning at) 72 178 P
0 (some future time, and the \336le system will reserve the bandwidth of all underlying devices to meet) 72 164 P
-0.21 (the requested guarantee. If the bandwidth is not available the application\325) 72 150 P
-0.21 (s request will be refused.) 421.28 150 P
0.04 (Note that this mechanism is device and topology independent; it can, for example, be extended to) 72 136 P
(a distributed system with no change to application code.) 72 122 T
0.8 (The only new interface to the user will be that used to make a bandwidth reservation. This will) 72 96 P
0.56 (take the form of a new ioctl\050\051 call on a \336le or a new system call. All data accesses will be made) 72 82 P
(with standard read\050\051 and write\050\051 system calls.) 72 68 T
FMENDPAGE
%%EndPage: "12" 13
%%Page: "13" 13
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(13) 496 42.62 T
1 12 Q
0.08 (Guaranteed rate I/O will have very little impact on the buf) 72 712 P
0.08 (fer cache, because programs which uti-) 351.75 712 P
-0.02 (lize this mechanism will typically be required to use direct I/O and will thus completely avoid the) 72 698 P
0.08 (buf) 72 684 P
0.08 (fer cache. It will, however) 87.77 684 P
0.08 (, have an impact on the disk drivers. These must be modi\336ed to rec-) 213.5 684 P
0.08 (ognize guaranteed rate requests and to schedule them in a real time manner) 72 670 P
0.08 (. The disk and volume) 432.73 670 P
1.2 (drivers will also be required to export an interface for acquiring their response time and band-) 72 656 P
(width characteristics for use by the reservation scheduling module.) 72 642 T
0.04 (The knowledge of what bandwidth is available for reservation will most likely be pushed out into) 72 616 P
0.23 (a user level reservation scheduling daemon. The daemon will have knowledge of the characteris-) 72 602 P
0.04 (tics and con\336guration of the disks and volumes on the system \050including backplane and SCSI bus) 72 588 P
-0.04 (throughput\051, and it will be the responsibility of this daemon to track both current and future band-) 72 574 P
(width reservations.) 72 560 T
2 16 Q
(13.0   V) 72 519.33 T
(olume Manager) 122.05 519.33 T
1 12 Q
1.13 (W) 72 492 P
1.13 (ithin each logical volume, the volume manager implements multiple sub-volumes, which are) 82.84 492 P
1.94 (separate linear address spaces of disk blocks in which the \336le system stores its data and log) 72 478 P
-0.12 (blocks. Each subvolume is made of) 72 464 P
4 F
-0.12 (partitions) 244.16 464 P
1 F
-0.12 ( \050real, physical regions of disk blocks\051 composed by) 290.81 464 P
-0.03 (concatenation, plexing \050copying\051, and striping. The volume manager is responsible for translating) 72 450 P
0.91 (logical addresses in the linear address spaces into real disk addresses. Where there are multiple) 72 436 P
0.48 (copies of a logical block \050plexing\051, the volume manager writes to) 72 422 P
4 F
0.48 (all) 393.05 422 P
1 F
0.48 ( copies, and reads from) 405.71 422 P
4 F
0.48 (any) 522.68 422 P
1 F
2.08 (copy \050since all copies are identical\051. The volume manager is responsible for maintaining the) 72 408 P
0.62 (equality of plexes across crashes and both temporary and permanent disk failures. In future sys-) 72 394 P
1.35 (tems, volumes will be spread across nodes of the system and will be accessible from multiple) 72 380 P
(nodes.) 72 366 T
-0.1 (A volume used for \336le system operations is composed of at least two subvolumes, one for log and) 72 340 P
0.75 (one for data. Each subvolume consists of a number of plexes. Plexes are individually or) 72 326 P
0.75 (ganized) 502.7 326 P
1.15 (and map dif) 72 312 P
1.15 (ferent portions of the subvolume\325) 131.37 312 P
1.15 (s address space. A plex consists of a sequence of) 295.86 312 P
0.48 (volume elements each of which maps a portion of the plex\325) 72 298 P
0.48 (s address space. V) 360.62 298 P
0.48 (olume element can) 448.44 298 P
(then be striped across a number of disk partitions.) 72 284 T
0.34 (T) 72 258 P
0.34 (o support plexing on non-xFS volumes, the volume manager will maintain an on-disk write log) 78.49 258 P
0.58 (to keep track of changed blocks. This allows the volume manager to synchronize the data on all) 72 244 P
0.51 (the plexes without copying the full contents of the plex. When the volume manager is providing) 72 230 P
-0.29 (plexing support for an xFS \336le system, the volume manager interfaces will allow the \336le system to) 72 216 P
(do the write logging.) 72 202 T
2 16 Q
(14.0  Disk Drivers) 72 161.33 T
1 12 Q
1.36 (Disk drivers are the same as in traditional and current IRIX systems, except for ordering con-) 72 134 P
0.01 (straints needed by the log and volume managers and rate guarantees. In particular) 72 120 P
0.01 (, it must be pos-) 463 120 P
0.67 (sible for the volume manager to be certain that a write request has actually been completed, not) 72 106 P
0.21 (merely cached for later writing. It should also be possible for the volume manager to specify that) 72 92 P
0.21 (a given write not be reordered - that all blocks passed to the driver before this block will be writ-) 72 78 P
FMENDPAGE
%%EndPage: "13" 14
%%Page: "14" 14
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(14) 496 42.62 T
1 12 Q
0.26 (ten before this block is written, and all blocks passed to the driver after this block will be written) 72 712 P
0.75 (after this block. \050If non-ordered writes are not available on a particular driver) 72 698 P
0.75 (, the volume man-) 450.49 698 P
(ager can synthesize this behavior by waiting for completion, but this is much less ef) 72 684 T
(\336cient.\051) 473.85 684 T
2 16 Q
(15.0   Administration) 72 643.33 T
1 12 Q
0.33 (xFS administration includes the utilities needed to create and maintain volumes and \336le systems.) 72 616 P
-0.11 (It also includes programmatic interfaces for volume control, \336le system control \050mount, unmount,) 72 602 P
0.56 (etc.\051, backup and restore, hierarchical \336le systems, etc. In the future, administration support will) 72 588 P
1.97 (be expanded to allow remote access to volumes and \336le systems, for mounting, backup, etc.) 72 574 P
1.31 (Graphical interfaces will be provided by the system administration group in MSD for the new) 72 560 P
(tools that need it, i.e. volume administration.) 72 546 T
2 16 Q
(16.0   Thr) 72 505.33 T
(eads, Messages, Memory Allocation \050Kernel Services\051) 138.35 505.33 T
1 12 Q
0.41 (The project will make use of new kernel services at some point, not necessarily in the \336rst \050non-) 72 478 P
0.21 (distributed\051 release. The underlying communication between certain modules will be by message) 72 464 P
0.23 (passing in the remote cases in the future implementation, otherwise by ordinary procedural inter-) 72 450 P
1.18 (faces. The implementation will be based on kernel threads to increase parallelism. The threads) 72 436 P
0.33 (will pass messages to each other through message queues. There may also be memory allocation) 72 422 P
0 (enhancements to support the \336le system and its messages. None of this will be present in the \336rst,) 72 408 P
(non-distributed, release.) 72 394 T
2 16 Q
(17.0   Inter) 72 353.33 T
(-module Communication) 146.02 353.33 T
1 12 Q
1.12 (Communication between major xFS modules will be done by messages where that gives us an) 72 326 P
0.08 (advantage. This will happen either if the sender is remote, in a distributed system, or if additional) 72 312 P
0.17 (performance \050parallelism\051 can be gained by using messages. W) 72 298 P
0.17 (e expect to use messages from the) 375.79 298 P
0.38 (vnode layer to the \336le system implementation layers in the distributed cases, and procedure calls) 72 284 P
0.58 (in the local cases. Disk drivers do not need a message interface; the volume managers can com-) 72 270 P
-0.22 (municate with each other) 72 256 P
-0.22 (. Administrative interfaces must all be message-based so that administra-) 191.58 256 P
1 (tive utilities can be run remotely to the administered object. The log manager interfaces do not) 72 242 P
0.74 (need to be message-based, as log accesses are never remote. The name manager needs message) 72 228 P
-0.28 (interfaces to deal with mount points for remote \336le systems encountered during pathname parsing.) 72 214 P
-0.25 (Communication is addressed to a message queue, identi\336ed either by a unique id or by an address;) 72 188 P
1.03 (the address is allowed only in the case where the queue is known to be local. The unique id is) 72 174 P
0.34 (associated with the queue when it is created. A message queue may be serviced by one thread or) 72 160 P
2.6 (by several threads. The message-passing routines are simple synchronous and asynchronous) 72 146 P
0.62 (queueing routines. For the remote case we will need to implement a communication manager to) 72 132 P
-0.02 (identify the machines associated with each unique id, and to packetize and transmit the messages.) 72 118 P
0.02 (In the local case this module is a simple routine that handles the translation of unique id\325) 72 104 P
0.02 (s to mes-) 496.66 104 P
(sage queue addresses, and queues the message appropriately) 72 90 T
(.) 360.98 90 T
FMENDPAGE
%%EndPage: "14" 15
%%Page: "15" 15
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 Ar) 94.61 42.62 T
(chitectur) 122.07 42.62 T
(e) 153.03 42.62 T
(October 8, 1993) 260.9 42.62 T
(15) 496 42.62 T
1 12 Q
-0.15 (Proper assignment of unique id\325) 72 712 P
-0.15 (s, whereby the non-timestamp portion of the unique id is adminis-) 224.65 712 P
0.88 (tered in a rational way) 72 698 P
0.88 (, will mean that the administration tasks will scale. The goal is to have a) 181.97 698 P
0 (unique id space that can be interpreted correctly over a wide area network, so that \336lesystems can) 72 684 P
(be mounted and accessed from very remote systems.) 72 670 T
FMENDPAGE
%%EndPage: "15" 16
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 15 1
%%DocumentFonts: Palatino-Roman
%%+ Times-Roman
%%+ Times-Bold
%%+ Courier-Bold
%%+ Times-Italic
%%+ Helvetica
%%+ Times-BoldItalic