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

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

Revision 1.1, Wed Mar 29 22:55:49 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 13 FMDOCUMENT
0 0 /Times-Roman FMFONTDEFINE
1 0 /Palatino-Roman FMFONTDEFINE
2 0 /Helvetica FMFONTDEFINE
3 0 /Times-Bold FMFONTDEFINE
4 0 /Courier FMFONTDEFINE
5 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
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 1 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
54 72 567 720 R
7 X
V
0 36 Q
0 X
(Overview) 239.54 696 T
3 18 Q
(Interaction with the log manager) 54 658 T
(A few speci\336cs on algorithms and data structur) 54 626 T
(es) 415.96 626 T
(In-cor) 54 594 T
(e log) 101.64 594 T
(In-cor) 54 562 T
(e log details) 101.64 562 T
(Other interfaces) 54 530 T
(On-disk log r) 54 498 T
(epr) 155.64 498 T
(esentation) 181.3 498 T
(Log r) 54 466 T
(ecord header) 96.15 466 T
(Log operation header) 54 434 T
(Not yet implemented) 54 402 T
FMENDPAGE
%%EndPage: "1" 2
%%Page: "2" 2
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 2 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
0 16 Q
(this page left intentionally blank) 207.75 489 T
FMENDPAGE
%%EndPage: "2" 3
%%Page: "3" 3
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 3 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
45 81 567 729 R
7 X
V
3 24 Q
0 X
(Interaction with the log manager) 137.45 713 T
0 16 Q
(1.) 45 686.33 T
(Request a reservation) 58.74 686.33 T
4 F
2 K
(\245) 58.75 662.33 T
0 F
0 K
(ubiquitous mount structure) 71.64 662.33 T
4 F
2 K
(\245) 58.75 638.33 T
0 F
0 K
(transaction identi\336er \050uuid?-- returned from log manager?\051) 71.64 638.33 T
4 F
2 K
(\245) 58.75 614.33 T
0 F
0 K
(length of data in bytes \050assert on long alignment?\051) 71.64 614.33 T
4 F
2 K
(\245) 58.75 590.33 T
0 F
0 K
(ticket pointer \050returned from log manager\051) 71.64 590.33 T
4 F
2 K
(\245) 58.75 566.33 T
0 F
0 K
(client identi\336er \050currently only transaction manager supported\051) 71.64 566.33 T
4 F
2 K
(\245) 58.75 542.33 T
0 F
0 K
(\337ags) 71.64 542.33 T
4 F
2 K
(\245) 71.64 518.33 T
0 F
0 K
(sleep \050not yet implemented\051) 84.6 518.33 T
4 F
2 K
(\245) 71.64 494.33 T
0 F
0 K
(no sleep) 84.6 494.33 T
4 F
2 K
(\245) 71.64 470.33 T
0 F
0 K
(permanent reservation \050not yet implemented-more later\051) 84.6 470.33 T
(2.) 45 446.33 T
(Possibly multiple writes to log manager using the ticket provided) 58.74 446.33 T
4 F
2 K
(\245) 58.75 422.33 T
0 F
0 K
(mount structure) 71.64 422.33 T
4 F
2 K
(\245) 58.75 398.33 T
0 F
0 K
(array of region pointers) 71.64 398.33 T
4 F
2 K
(\245) 58.75 374.33 T
0 F
0 K
(number of region pointers) 71.64 374.33 T
4 F
2 K
(\245) 71.64 350.33 T
0 F
0 K
(address) 84.6 350.33 T
4 F
2 K
(\245) 71.64 326.33 T
0 F
0 K
(length in bytes) 84.6 326.33 T
4 F
2 K
(\245) 71.64 302.33 T
0 F
0 K
(log sequence number of speci\336c region \050more later\051) 84.6 302.33 T
4 F
2 K
(\245) 58.75 278.33 T
0 F
0 K
(ticket) 71.64 278.33 T
(3.) 45 254.33 T
(Finish with reservation and commit transaction) 58.74 254.33 T
4 F
2 K
(\245) 58.75 230.33 T
0 F
0 K
(mount structure) 71.64 230.33 T
4 F
2 K
(\245) 58.75 206.33 T
0 F
0 K
(ticket) 71.64 206.33 T
(4.) 45 182.33 T
(Possibly multiple callback noti\336cations to be called after data is on disk) 58.74 182.33 T
4 F
2 K
(\245) 58.75 158.33 T
0 F
0 K
(mount structure) 71.64 158.33 T
4 F
2 K
(\245) 58.75 134.33 T
0 F
0 K
(log sequence number) 71.64 134.33 T
4 F
2 K
(\245) 58.75 110.33 T
0 F
0 K
(callback function) 71.64 110.33 T
4 F
2 K
(\245) 58.75 86.33 T
0 F
0 K
(callback ar) 71.64 86.33 T
(gument) 141.06 86.33 T
FMENDPAGE
%%EndPage: "3" 4
%%Page: "4" 4
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 4 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
44.25 81 567.75 720.75 R
7 X
V
3 24 Q
0 X
(A few speci\336cs on algorithms & data structur) 64.05 704.75 T
(es) 527.97 704.75 T
4 16 Q
2 K
(\245) 44.25 662.08 T
0 F
0 K
(Reservations) 57.99 662.08 T
(Long running transactions use:) 57.99 638.08 T
4 F
2 K
(\245) 58 614.08 T
0 F
0 K
(permanent reservations) 70.89 614.08 T
4 F
2 K
(\245) 58 590.08 T
0 F
0 K
(ask for two times what they need for one transaction) 70.89 590.08 T
4 F
2 K
(\245) 44.25 548.08 T
0 F
0 K
(T) 57.99 548.08 T
(ickets) 67.21 548.08 T
4 F
2 K
(\245) 58 524.08 T
0 F
0 K
(single threaded data structures) 70.89 524.08 T
4 F
2 K
(\245) 58 500.08 T
0 F
0 K
(allocated in page size chunks and never deallocated) 70.89 500.08 T
4 F
2 K
(\245) 58 476.08 T
0 F
0 K
(stored on a linked list, hung of) 70.89 476.08 T
(f the main log structure) 265.6 476.08 T
4 F
2 K
(\245) 58 452.08 T
0 F
0 K
(contain:) 70.89 452.08 T
4 F
2 K
(\245) 70.89 428.08 T
0 F
0 K
(transaction identi\336er) 83.85 428.08 T
4 F
2 K
(\245) 70.89 404.08 T
0 F
0 K
(reservation in bytes) 83.85 404.08 T
4 F
2 K
(\245) 70.89 380.08 T
0 F
0 K
(client identi\336er) 83.85 380.08 T
4 F
2 K
(\245) 44.25 338.08 T
0 F
0 K
(Main log structure hung of) 57.99 338.08 T
(f mount structure) 229.15 338.08 T
4 11 Q
(typedef struct log {) 44.25 311.42 T
5 F
(log_ticket_t) 62.25 298.42 T
4 F
(*l_freelist;) 152.25 298.42 T
(/* free list of tickets */) 260.25 298.42 T
5 F
(in_core_log_t) 62.25 285.42 T
4 F
(*l_iclog;) 152.25 285.42 T
(/* 1st copy of in-core log */) 260.25 285.42 T
5 F
(in_core_log_t) 62.25 272.42 T
4 F
(*l_iclog2;) 152.25 272.42 T
(/* 2nd copy of in-core log */) 260.25 272.42 T
5 F
(in_core_log_t) 62.25 259.42 T
4 F
(*l_iclog_curr;) 152.25 259.42 T
(/* current active log */) 260.25 259.42 T
5 F
(sema_t) 62.25 246.42 T
4 F
(l_iclogsema;) 152.25 246.42 T
(/* grab to change iclog state */) 260.25 246.42 T
5 F
(dev_t) 62.25 233.42 T
4 F
(l_dev;) 152.25 233.42 T
(/* dev_t of log */) 260.25 233.42 T
5 F
(int) 62.25 220.42 T
4 F
(l_logsize;) 152.25 220.42 T
(/* total size in bytes of log */) 260.25 220.42 T
5 F
(int) 62.25 207.42 T
4 F
(l_cycle;) 152.25 207.42 T
(/* Cycle number of log writes */) 260.25 207.42 T
5 F
(int) 62.25 194.42 T
4 F
(l_currblock;) 152.25 194.42 T
(/* current logical block of log */) 260.25 194.42 T
5 F
(int) 62.25 181.42 T
4 F
(l_logreserved;) 152.25 181.42 T
(/* log space currently reserved */) 260.25 181.42 T
5 F
(xfs_lsn_t) 62.25 168.42 T
4 F
(l_sync_lsn;) 152.25 168.42 T
(/* lsn of last LR w/ buffers committed */) 260.25 168.42 T
(} log_t;) 44.25 155.42 T
FMENDPAGE
%%EndPage: "4" 5
%%Page: "5" 5
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 5 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
44.25 81 567.75 720.75 R
7 X
V
3 24 Q
0 X
(In-cor) 250.59 704.75 T
(e log) 314.11 704.75 T
0 16 Q
(Why?) 44.25 662.08 T
0 14 Q
(Used to help performance of log manager and buf) 57.99 639.42 T
(fer cache.) 336.74 639.42 T
0 16 Q
(How?) 44.25 610.08 T
0 14 Q
( Batch multiple log operations together into lar) 57.99 587.42 T
(ger writes to disk) 320.08 587.42 T
4 16 Q
2 K
(\245) 70.89 564.08 T
0 F
0 K
(decreases the number of writes going to disk.) 83.85 564.08 T
4 F
2 K
(\245) 70.89 540.08 T
0 F
0 K
(decreases the time buf) 83.85 540.08 T
(fers stay pinned in memory) 226.11 540.08 T
(.) 400.06 540.08 T
4 11 Q
(typedef struct in_core_log {) 44.25 489.42 T
(union {) 80.25 476.42 T
5 F
(log_rec_header_t) 116.25 463.42 T
4 F
(sic_header;) 260.25 463.42 T
5 F
(char) 116.25 450.42 T
4 F
(sic_sector[LOG_HEADER_SIZE];) 260.25 450.42 T
(}) 80.25 437.42 T
5 F
(ic_s) 93.43 437.42 T
4 F
(;) 119.8 437.42 T
5 F
(char) 80.25 424.42 T
4 F
(ic_data[LOG_RECORD_SIZE-LOG_HEADER_SIZE];) 152.25 424.42 T
5 F
(xfs_lsn_t) 80.25 411.42 T
4 F
(ic_current_lsn;) 152.25 411.42 T
(/* lsn for this log record */) 260.25 411.42 T
5 F
(int) 80.25 398.42 T
4 F
(ic_size;) 152.25 398.42 T
(/* total size of data buffer */) 260.25 398.42 T
5 F
(uint) 80.25 385.42 T
4 F
(ic_offset;) 152.25 385.42 T
(/* start to begin writing data */) 260.25 385.42 T
5 F
(char) 80.25 372.42 T
4 F
(ic_state;) 152.25 372.42 T
(/* state of this IC log */) 260.25 372.42 T
5 F
(char) 80.25 359.42 T
4 F
(ic_refcnt;) 152.25 359.42 T
(/* reference count */) 260.25 359.42 T
5 F
(buf_t) 80.25 346.42 T
4 F
(*ic_bp;) 152.25 346.42 T
(/* private buffer pointer */) 260.25 346.42 T
(} in_core_log_t;) 44.25 333.42 T
(#def) 44.25 294.42 T
(ine) 70.62 294.42 T
5 F
(ic_header) 96.99 294.42 T
4 F
( ic_s.sic_header) 156.31 294.42 T
0 14 Q
(still need to union ic_data with a log_op_header_t) 57.99 256.42 T
FMENDPAGE
%%EndPage: "5" 6
%%Page: "6" 6
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 6 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
44.25 81 567.75 720.75 R
7 X
V
3 24 Q
0 X
(In-cor) 214.28 704.75 T
(e log details) 277.79 704.75 T
4 16 Q
2 K
(\245) 44.25 640.08 T
0 F
0 K
(T) 57.99 640.08 T
(wo complete in-core structures) 66.65 640.08 T
4 F
2 K
(\245) 58 616.08 T
0 F
0 K
(while one is syncing to disk, writes can occur to the other in-core log.) 70.89 616.08 T
4 F
2 K
(\245) 58 592.08 T
0 F
0 K
(need some type of simple state machine which is MP-safe.) 70.89 592.08 T
4 F
2 K
(\245) 44.25 568.08 T
0 F
0 K
(Multiple log writes can be happening at the same time to the same in-core log.) 57.99 568.08 T
4 F
2 K
(\245) 58 544.08 T
0 F
0 K
(use of) 70.89 544.08 T
(fset to determine where next write can start.) 109.24 544.08 T
4 F
2 K
(\245) 58 520.08 T
0 F
0 K
(use refcnt to remember how many writes are happening concurrently) 70.89 520.08 T
(.) 510.82 520.08 T
4 F
2 K
(\245) 44.25 496.08 T
0 F
0 K
(The following structures/\336elds will be under state machine control:) 57.99 496.08 T
4 F
2 K
(\245) 58 472.08 T
0 F
0 K
(states of both in-core logs) 70.89 472.08 T
4 F
2 K
(\245) 58 448.08 T
0 F
0 K
(of) 70.89 448.08 T
(fsets of both in-core logs) 83.92 448.08 T
4 F
2 K
(\245) 58 424.08 T
0 F
0 K
(reference counts of both in-core logs) 70.89 424.08 T
4 F
2 K
(\245) 58 400.08 T
0 F
0 K
(current active in-core log) 70.89 400.08 T
4 F
2 K
(\245) 58 376.08 T
0 F
0 K
(callback functions of both in-core logs) 70.89 376.08 T
4 F
2 K
(\245) 44.25 352.08 T
0 F
0 K
(Need to think more about the case where both logs are syncing to disk and a) 57.99 352.08 T
(new write comes in.) 57.99 334.08 T
FMENDPAGE
%%EndPage: "6" 7
%%Page: "7" 7
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 7 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
45 81 567 729 R
7 X
V
3 24 Q
0 X
(Other interfaces) 222.41 713 T
0 18 Q
(Force log manager to write in-core log to disk) 45 641 T
4 16 Q
2 K
(\245) 45 616.33 T
0 F
0 K
(perform synchronously) 58.74 616.33 T
4 F
2 K
(\245) 45 592.33 T
0 F
0 K
(force it down now) 58.74 592.33 T
4 F
2 K
(\245) 45 568.33 T
0 F
0 K
(force it down within some timeout \050not yet implemented\051) 58.74 568.33 T
0 18 Q
(Assign new transaction to a given reservation) 45 505 T
4 16 Q
2 K
(\245) 45 480.33 T
0 F
0 K
(mount structure) 58.74 480.33 T
4 F
2 K
(\245) 45 456.33 T
0 F
0 K
(ticket) 58.74 456.33 T
4 F
2 K
(\245) 45 432.33 T
0 F
0 K
(old transaction identi\336er) 58.74 432.33 T
4 F
2 K
(\245) 45 408.33 T
0 F
0 K
(new transaction identi\336er \050uuid?--from log manager?\051) 58.74 408.33 T
0 18 Q
(Mount log \336lesystem) 45 345 T
4 16 Q
2 K
(\245) 45 320.33 T
0 F
0 K
(mount structure) 58.74 320.33 T
4 F
2 K
(\245) 45 296.33 T
0 F
0 K
(log device number) 58.74 296.33 T
4 F
2 K
(\245) 45 272.33 T
0 F
0 K
(\337ags \050none de\336ned yet\051) 58.74 272.33 T
0 18 Q
(Initialize log \336lesystem - does nothing now) 45 211 T
FMENDPAGE
%%EndPage: "7" 8
%%Page: "8" 8
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 8 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
3 24 Q
(On-disk r) 169.49 681 T
(epr) 268.37 681 T
(esentation) 302.57 681 T
171.76 207 271.83 621 R
0.5 H
2 Z
N
171.76 531 271.83 531 2 L
N
301.56 527.69 290.03 531 301.56 534.31 301.56 531 4 Y
V
301.56 531 335.52 531 2 L
N
0 16 Q
(start of log) 353.71 529.09 T
0 12 Q
(4k boundary) 104.25 528.75 T
171 486 270 486 2 L
N
(log rec header) 185.25 506.6 T
171 459 270 459 2 L
N
(log op header) 186 469.85 T
(512 bytes) 115.69 506.6 T
171 387 270 387 2 L
N
(data) 209.52 420.75 T
171 360 270 360 2 L
N
(log op header) 188.25 370.5 T
171 333 270 333 2 L
N
(data) 208.02 342 T
171 297 270 297 2 L
N
(log rec header) 187.5 312.82 T
171 270 270 270 2 L
N
(log op header) 189 281.6 T
171 243 270 243 2 L
N
(data) 210 253.5 T
(512 bytes) 117 308.6 T
(4k boundary) 107.25 332.6 T
0 36 Q
(...) 200.25 223.5 T
0 14 Q
(4k log record boundaries and) 324 468 T
(512 byte log record headers) 324 454 T
(are constants but not necessarily) 324 440 T
(set in concrete.) 324 426 T
0 12 Q
(long aligned) 106.5 385.5 T
FMENDPAGE
%%EndPage: "8" 9
%%Page: "9" 9
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 9 of 1) 517.39 29.12 T
(1) 552.61 29.12 T
3 24 Q
(Log r) 215.84 721.64 T
(ecord header) 272.04 721.64 T
90 167.25 540 684 R
7 X
V
0.5 H
2 Z
0 X
N
90 641.82 540 641.82 2 L
N
0 16 Q
(magic number) 258.75 658.84 T
90 599.63 540 599.63 2 L
N
(version number) 255 610.97 T
0 12 Q
(32 bits) 293.18 698.32 T
518.72 703.81 530.25 700.5 518.72 697.19 518.72 700.5 4 Y
V
332.25 700.5 518.72 700.5 2 L
N
540 691.5 540 709.5 2 L
N
103.79 697.94 92.25 701.25 103.79 704.56 103.79 701.25 4 Y
V
290.25 701.25 103.79 701.25 2 L
N
91.5 693 91.5 711 2 L
N
90 515.27 540.75 515.27 2 L
N
0 14 Q
(log sequence number) 252 558.04 T
90 430.9 540 430.9 2 L
N
(sync log sequence number) 239.25 468.79 T
90 388.72 540 388.72 2 L
N
90 346.54 540 346.54 2 L
N
90 304.35 540 304.35 2 L
N
(checksum \050non-zero if used\051) 227.25 405.79 T
(previous of) 270.75 362.29 T
(fset) 333.84 362.29 T
(number of log operations) 251.25 322.54 T
(block numbers which collide with magic number) 186 271.54 T
(Reservations are internally increased by the size of a log record header \050512 bytes\051) 91.5 135.75 T
FMENDPAGE
%%EndPage: "9" 10
%%Page: "10" 10
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 10 of 1) 513.5 29.12 T
(1) 552.61 29.12 T
99.75 503.25 519.75 642 R
7 X
V
0.5 H
2 Z
0 X
N
3 24 Q
(Log operation header) 217.84 689.21 T
99 648 99 666 2 L
N
522 648 522 666 2 L
N
0 12 Q
(32 bits) 303.68 652.57 T
510.46 660.31 522 657 510.46 653.69 510.46 657 4 Y
V
342 657 510.46 657 2 L
N
110.54 653.69 99 657 110.54 660.31 110.54 657 4 Y
V
297 657 110.54 657 2 L
N
99 576 522 576 2 L
N
(transaction id) 268.04 605.6 T
99 540 522 540 2 L
N
(length) 288 558 T
99 504 522 504 2 L
N
306 540 306 504 2 L
N
207 540 207 504 2 L
N
(client identi\336er) 117 519 T
(\337ags) 246.59 519 T
(reserved) 378.75 519 T
3 24 Q
(Log Sequence Number) 215.25 432 T
105.75 360 528 396 R
N
315.75 395.25 315.75 360 2 L
N
105.5 400 105.5 418 2 L
N
528.5 400 528.5 418 2 L
N
0 12 Q
(64 bits) 310.18 404.57 T
516.97 412.31 528.5 409 516.97 405.69 516.97 409 4 Y
V
348.5 409 516.97 409 2 L
N
117.04 405.69 105.5 409 117.04 412.31 117.04 409 4 Y
V
303.5 409 117.04 409 2 L
N
(pass number) 182.71 376.57 T
(log block number) 381.89 375.82 T
0 14 Q
(Log sequence numbers are used at recovery time to \336nd the end of the log.) 107.25 321 T
(The log block number of the start of the log record is embedded in the lsn,) 107.25 293 T
(so the tail of the log can be tracked more easily) 107.25 279 T
(.) 370.59 279 T
FMENDPAGE
%%EndPage: "10" 11
%%Page: "11" 11
612 792 0 FMBEGINPAGE
45.75 37.5 568.5 724.5 R
7 X
0 K
V
45 744 567.75 765 R
V
0 10 Q
0 X
(Silicon Graphics Proprietary) 49.5 751.5 T
(Michael Nishimoto) 483.75 751.5 T
0 12 Q
(Log Manager Design) 56.25 27 T
1 8 Q
(December 17, 1993) 307.57 29.12 T
2 7 Q
(Page 1) 514.02 29.12 T
(1 of 1) 535.65 29.12 T
(1) 552.61 29.12 T
54 72 540 720 R
7 X
V
3 24 Q
0 X
(Not yet implemented) 190.42 704 T
0 16 Q
(Recovery code) 54 661.33 T
(Finding the end of the on-disk log \050algorithm described in design doc\051) 54 631.33 T
(Complete in-core log state machine \050including callback functions\051) 54 601.33 T
(Rolling log/tail management) 54 571.33 T
FMENDPAGE
%%EndPage: "11" 12
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 11 1
%%DocumentFonts: Times-Roman
%%+ Palatino-Roman
%%+ Helvetica
%%+ Times-Bold
%%+ Courier
%%+ Courier-Bold