$ od -c -N 50000 [Indigo]<IFS>IfsFileSys.dm!2 0000000 377 \0 \0 I f s O p e n . b c p l \0 0000020 373 225 ( 302 200 \0 \0 376 001 \0 q 331 / / I 0000040 f s O p e n . b c p l - - O 0000060 p e n / C l o s e a n I F S 0000100 \r / / C o p y r i g h t X e 0000120 r o x C o r p o r a t i o n 0000140 1 9 7 9 , 1 9 8 0 \r \r / / L 0000160 a s t m o d i f i e d A p r 0000200 i l 1 9 , 1 9 8 0 1 2 : 0000220 1 9 P M b y T a f t \r \r g 0000240 e t " I f s F i l e s . d e c 0000260 l " \r g e t " S t r e a m s . 0000300 d " \r g e t " I F S . d e c l 0000320 " \r g e t " D i s k s . d " \r 0000340 \r e x t e r n a l \r [ \r / / O 0000360 u t g o i n g p r o c e d u r 0000400 e s \r O p e n I F S ; C l o s 0000420 e I F S \r O p e n I F S 376 001 \0 : 0000440 \t P a r t 1 ; O p e n I F S P 0000460 a r t 2 ; O p e n I F S T r e 0000500 e \r O p e n T F S D i s k ; C 0000520 l o s e T F S D i s k ; I n i 0000540 t D i s k s \r \r / / I n c o m 0000560 i n g p r o c e d u r e s \r T 0000600 F S I n i t ; T F S C l o s e 0000620 ; I F S C r e a t e D D M g r 0000640 ; T F S D i s k M o d e l \r I 0000660 F S E r r o r ; M u l t E q ; 0000700 F r e e P o i n t e r ; E n 0000720 q u e u e ; U n q u e u e ; 0000740 B l o c k \r A l l o c a t e ; 0000760 F r e e ; M o v e B l o c k ; 0001000 Z e r o ; D e f a u l t A r 0001020 g s ; M i n \r O p e n F i l e 0001040 ; 376 001 \0 034 - C l o s e s ; R 0001060 e a d B l o c k \r E x t r a c t 0001100 S u b s t r i n g ; S t r i n 0001120 g C o m p a r e \r C a l l e r s 0001140 F r a m e ; R e t u r n F r o 0001160 m ; E x t e n d S t a c k C a 0001200 l l \r C r e a t e O F T ; D e 0001220 s t r o y O F T ; L o c k ; 0001240 U n l o c k \r O p e n F P T r e 0001260 e ; C l o s e B T r e e \r D i 0001300 r C o m p a r e K e y ; D i r 0001320 E n t r y L e n g t h \r \r / / 0001340 O u t g o i n g s t a t i c s 0001360 \r f s Q ; d r i v e T a b ; 0001400 i f s D D M g r ; o p e n L o 0001420 c k \r \r / / I n c o m i n g 0001440 s t a t i c 376 001 \0 361 ~ s \r s y s 0001460 Z o n e ; b i g Z o n e ; p 0001500 r i m a r y I F S \r ] \r \r s t a 0001520 t i c [ d r i v e T a b ; 0001540 i f s D D M g r ; f s Q ; o 0001560 p e n L o c k ] \r \r m a n i f 0001600 e s t e c R e t u r n F r o m 0001620 = 1 7 \r \r / / L o c a l 0001640 s t r u c t u r e s u s e d 0001660 t o k e e p t r a c k o f 0001700 d i s k s i n O p e n I F 0001720 S P a r t 1 \r s t r u c t u r e 0001740 P D S K : \r [ \r d i s k w o 0001760 r d \r t h i s U n i t w o r d 0002000 \r c r e a t e d w o r d 2 \r 0002020 ] \r \r s t r u c t u r e P L D 0002040 T ^ 0 , n D i s k s - 376 001 \0 Y 8 0002060 1 @ P D S K \r m a n i f e s t 0002100 l e n P L D T = s i z e 0002120 P L D T / 1 6 \r \f \r / / O p e n 0002140 I F S i s s p l i t i n t 0002160 o t w o p a r t s b e c a 0002200 u s e I F S i n i t i a l i 0002220 z a t i o n \r / / n e e d s t 0002240 h e r e s u l t s o f O p 0002260 e n I F S P a r t 1 t o s e 0002300 t u p t h e v i r t u a l 0002320 \r / / m e m o r y , w h i c h 0002340 m u s t b e d o n e b e 0002360 f o r e c a l l i n g O p e 0002400 n I F S P a r t 2 . \r \r / / O p 0002420 e n I F S c a l l s T F S I 0002440 n i t w h i c h c a l l s 0002460 376 001 \0 322 241 O p e n F i l e - 0002500 w h i c h t a k e s \r / / l o 0002520 t s o f s t a c k s p a c 0002540 e . T h e r e i s p l e 0002560 n t y o f s t a c k a v a 0002600 i l a b l e \r / / d u r i n g 0002620 i n i t i a l i z a t i o n w 0002640 h e n t h e i n d i v i d u 0002660 a l p a r t s a r e c a l 0002700 l e d , \r / / b u t n o t d 0002720 u r i n g n o r m a l o p e 0002740 r a t i o n , s o O p e n I 0002760 F S e x t e n d s t h e s 0003000 t a c k \r / / b e f o r e c a 0003020 l l i n g t h e p a r t s . 0003040 \r / / - - - - - - - - - - - - - 0003060 - - - - - 376 001 \0 p 360 - - - - - - 0003100 - - - - - - - - - - - - - - - - * 0003160 - - - - \r l e t O p e n I F S 0003200 ( i d , l v E c ) = E x t e 0003220 n d S t a c k C a l l ( 2 0 4 8 0003240 , D o O p e n , i d , l v 0003260 E c ) \r / / - - - - - - - - - - 0003300 - - - - - - - - - - - - - - - - * 0003400 - - \r \r / / - - - - - - - - - - 0003420 - - - - - - - - - - - - - - - - * 0003460 - - - - - - - - - - 376 001 \0 020 226 - 0003500 - - - - - - - - - - - - - - - - 0003520 - - - - - - - \r a n d D o O p 0003540 e n ( i d , l v E c ) = v 0003560 a l o f \r / / - - - - - - - - - 0003600 - - - - - - - - - - - - - - - - * 0003700 - - - \r [ \r L o c k ( o p e n L 0003720 o c k , t r u e ) \r l e t r 0003740 e s = O p e n I F S P a r t 0003760 2 ( O p e n I F S P a r t 1 ( i 0004000 d , l v E c ) , l v E c ) \r 0004020 U n l o c k ( o p e n L o c k ) 0004040 \r r e s u l t i s r e s \r ] \r 0004060 \r / / - - - - - - - - - - - - 376 0004100 001 \0 J 257 - - - - - - - - - - - - 0004120 - - - - - - - - - - - - - - - - * 0004200 - - - - \r a n d C l o s e I F 0004220 S ( i f s , f o r c e ; n u 0004240 m a r g s n a ) = v a l o 0004260 f \r / / - - - - - - - - - - - - 0004300 - - - - - - - - - - - - - - - - * 0004400 \r / / i f f o r c e = t r 0004420 u e , t h e i f s w i l l 0004440 b e c l o s e d r e g a r 0004460 d l e s s o f w h e t h e r 0004500 \r / / 376 001 \0 ( $ t h e r e a 0004520 r e o p e n f i l e s . \r / 0004540 / i f f o r c e = f a l s 0004560 e o r o m i t t e d , C l 0004600 o s e I F S w i l l r e t u 0004620 r n f a l s e i f \r / / t 0004640 h e d i r e c t o r y i s 0004660 l o c k e d o r t h e r e 0004700 a r e o p e n f i l e s . \r 0004720 [ \r i f n a l s 2 t h e 0004740 n f o r c e = f a l s e \r 0004760 L o c k ( o p e n L o c k , t 0005000 r u e ) \r u n t i l L o c k ( 0005020 l v i f s > > I F S . d i r L 0005040 o c k , t r u e , t r u e ) 0005060 d o \r [ i f s > > I F 0005100 S . d i r L o c k 376 001 \0 330 024 C o 0005120 n f l i c t = t r u e ; B 0005140 l o c k ( ) ] \r u n l e s s 0005160 f o r c e d o \r i f i 0005200 f s > > I F S . o f t n e 0 0005220 t h e n u n l e s s D e s 0005240 t r o y O F T ( i f s ) r e s 0005260 u l t i s f a l s e \r i f i 0005300 f s > > I F S . d i r B T r e e 0005320 n e 0 t h e n C l o s e 0005340 B T r e e ( i f s > > I F S . d 0005360 i r B T r e e ) \r f o r l U n 0005400 i t = 0 t o i f s > > I 0005420 F S . n u m U n i t s - 1 d o 0005440 C l o s e T F S D i s k ( i f 0005460 s > > I F S . l p d t ^ l U n i 0005500 t ) \r U n q u e u e ( f s Q 376 001 0005520 \0 " 351 , i f s ) \r D e s t r o y 0005540 I F S ( i f s ) \r U n l o c k ( 0005560 o p e n L o c k ) \r r e s u l t 0005600 i s t r u e \r ] \r \r / / - - - 0005620 - - - - - - - - - - - - - - - - * 0005720 - - - - - - - - - \r a n d D e 0005740 s t r o y I F S ( i f s ) b e 0005760 \r / / - - - - - - - - - - - - - 0006000 - - - - - - - - - - - - - - - - * 0006060 - - - - - - - - - - - - - - - \r 0006100 [ \r F r e e P o i n t e r ( l v 0006120 i f 376 001 \0 8 ^ s > > I F S . o 0006140 f t , l v i f s > > I F S . 0006160 i d , l v i f s > > I F S . 0006200 n a m e ) \r F r e e ( s y s Z o 0006220 n e , i f s ) \r ] \r \f \r / / - 0006240 - - - - - - - - - - - - - - - - * 0006340 - - - - - - - - - - - \r a n d 0006360 O p e n I F S P a r t 1 ( i d , 0006400 l v E r r o r C o d e ) = 0006420 v a l o f \r / / - - - - - - - - 0006440 - - - - - - - - - - - - - - - - * 0006520 - - - - - - - - 376 001 \0 8 L - - - 0006540 - - - - - - - - - \r / / r e t u 0006560 r n s a n i f s s t r u c 0006600 t u r e o r f a l s e w i 0006620 t h @ l v E r r o r C o d e 0006640 s a y i n g w h y \r [ \r / / t 0006660 r y T F S I n i t o n a l 0006700 l p h y s i c a l u n i t s 0006720 t h a t a r e n ' t n o w 0006740 o p e n \r l e t h o m e = 0006760 A l l o c a t e ( s y s Z o n 0007000 e , l e n H o m e ) \r l e t 0007020 i f s = 0 \r l e t p l d t 0007040 = v e c l e n P L D T \r Z 0007060 e r o ( p l d t , l e n P L D 0007100 T ) \r f o r d r i v e = 0 0007120 t o n D r i v e s - 1 376 001 \0 0007140 W * d o f o r f s = 0 0007160 t o 1 d o \r i f d 0007200 r i v e T a b > > D r i v e T a 0007220 b ^ d r i v e . d i s k ^ f s 0007240 e q 0 t h e n \r 0007260 [ \r i f f s n e 0007300 0 t h e n \r 0007320 [ \r l e t 0007340 d i s k 0 = d r i v e T a b 0007360 > > D r i v e T a b ^ d r i v e 0007400 . d i s k ^ 0 \r 0007420 i f d i s k 0 e q 0 % 0007440 T F S D i s k M o d e l ( d i 0007460 s k 0 ) n e 3 0 0 l o o p 0007500 \r ] \r 0007520 l e t d i s k = O p e 0007540 n T 376 001 \0 275 5 F S D i s k ( d r 0007560 i v e , f s ) \r i 0007600 f d i s k e q 0 l o o p 0007620 / / n o p a c k o r n 0007640 o d r i v e \r l e 0007660 t s = O p e n F i l e ( " 0007700 I F S . h o m e " , k s T y p 0007720 e R e a d O n l y , 0 , 0 , 0007740 0 , 0 , 0 , 0 , d i s 0007760 k ) \r i f s e q 0010000 0 t h e n [ C l o s e T 0010020 F S D i s k ( d i s k ) ; l o 0010040 o p ] / / n o t i f s \r 0010060 R e a d B l o c k ( 0010100 s , h o m e , l e n H o m e 0010120 ) \r C l o s e s ( s 0010140 ) \r 376 001 \0 177 021 i f 0010160 S t r i n g C o m p a r e ( i d 0010200 , l v h o m e > > H o m e . 0010220 i d ) n e 0 t h e n \r 0010240 [ C l o s e T F 0010260 S D i s k ( d i s k ) ; l o o 0010300 p ] / / w r o n g i d \r 0010320 l e t p d s k = 0010340 l v p l d t > > P L D T ^ ( 0010360 2 * d r i v e + f s ) \r 0010400 p d s k > > P D S K . d i s 0010420 k = d i s k \r p 0010440 d s k > > P D S K . t h i s U n 0010460 i t = h o m e > > H o m e . 0010500 t h i s U n i t \r M 0010520 o v e B l o c k ( l v p d s k 0010540 > > P D S K . c r e a t 376 001 \0 266 0010560 223 e d , l v h o m e > > H o 0010600 m e . c r e a t e d , l T I M 0010620 E ) \r i f h o m e 0010640 > > H o m e . t h i s U n i t 0010660 e q 0 t h e n \r 0010700 [ / / F o u n d l 0010720 o g i c a l u n i t 0 , c 0010740 r e a t e I F S s t r u c t 0010760 u r e \r i f 0011000 i f s n e 0 t h e n \r 0011020 [ F r e e 0011040 ( s y s Z o n e , h o m e ) ; 0011060 O p e n I F S F a i l ( e c 2 0011100 L U n i t 0 s , p l d t , i 0011120 f s ) ] \r i 0011140 f s = A l l o c a t e ( s y 0011160 s 376 001 \0 d 303 Z o n e , l e n I 0011200 F S ) \r Z e r 0011220 o ( i f s , l e n I F S ) \r 0011240 i f s > > I F S 0011260 . l o g P a g e L e n g t h = 0011300 d i s k > > D S K . l n P a g 0011320 e S i z e \r i 0011340 f s > > I F S . p a g e L e n g 0011360 t h = 1 l s h i f t i f 0011400 s > > I F S . l o g P a g e L e 0011420 n g t h \r i f 0011440 s > > I F S . n u m U n i t s 0011460 = h o m e > > H o m e . n u m 0011500 U n i t s \r i 0011520 f s > > I F S . t y p e = h 0011540 o m e > > H o m e . t y p e \r 0011560 376 001 \0 260 ^ i f s 0011600 > > I F S . i d = E x t r a 0011620 c t S u b s t r i n g ( l v h 0011640 o m e > > H o m e . i d ) \r 0011660 i f s > > I F S . 0011700 n a m e = E x t r a c t S u 0011720 b s t r i n g ( l v h o m e > 0011740 > H o m e . n a m e ) \r 0011760 M o v e B l o c k ( l 0012000 v i f s > > I F S . c r e a t 0012020 e d , l v h o m e > > H o m 0012040 e . c r e a t e d , l T I M E 0012060 ) \r ] \r 0012100 ] \r F r e e ( s y s Z o n 0012120 e , h o m e ) \r i f i f s 0012140 e q 0 t h e n O p e n I F 0012160 S F a i l ( e c N o L 376 001 \0 6 022 0012200 U n i t 0 , p l d t , 0 ) 0012220 / / n o l o g i c a l u n 0012240 i t 0 f o u n d \r \f \r / / 0012260 O p e n I F S P a r t 1 ( c o 0012300 n t ' d ) \r \r / / I n s e r t 0012320 p a c k s w i t h t h e 0012340 c o r r e c t P D S K . c r e 0012360 a t e d i n t o t h e i f 0012400 s , \r / / c o u n t i n g t 0012420 h e n u m b e r o f p a c 0012440 k s i n s e r t e d a s w 0012460 e g o \r l e t n u m U n i t 0012500 s = 0 \r f o r d r i v e 0012520 = 0 t o n D r i v e s - 1 0012540 d o f o r f s = 0 t 0012560 o 1 d o \r [ \r l 0012600 376 001 \0 250 g e t p d s k = l 0012620 v p l d t > > P L D T ^ ( 2 * 0012640 d r i v e + f s ) \r i f 0012660 p d s k > > P D S K . d i s k 0012700 n e 0 t h e n \r 0012720 t e s t M u l t E q ( l v p 0012740 d s k > > P D S K . c r e a t e 0012760 d , l v i f s > > I F S . c 0013000 r e a t e d ) \r 0013020 i f s o \r 0013040 [ \r 0013060 i f i f s > > I F S . l p d t 0013100 ^ ( p d s k > > P D S K . t h i 0013120 s U n i t ) n e 0 t h e n 0013140 \r 0013160 O p e n I F S F a i l ( e c D u 0013200 p L U n i 376 001 \0 254 021 t , p l d 0013220 t , i f s ) \r 0013240 i f s > > I F S . l p d 0013260 t ^ ( p d s k > > P D S K . t h 0013300 i s U n i t ) = p d s k > > 0013320 P D S K . d i s k \r 0013340 d r i v e T a b > > 0013360 D r i v e T a b ^ d r i v e . i 0013400 f s = i f s \r 0013420 n u m U n i t s = 0013440 n u m U n i t s + 1 \r 0013460 ] \r 0013500 i f n o t \r 0013520 [ C l o s e T F S D i 0013540 s k ( p d s k > > P D S K . d i 0013560 s k ) ; p d s k > > P D S K . 0013600 d i s k = 0 ] 376 001 \0 \r 235 \r 0013620 ] \r \r / / D i d w e 0013640 f i n d a l l t h e l o g 0013660 i c a l u n i t s ? \r i f n 0013700 u m U n i t s n e i f s > > 0013720 I F S . n u m U n i t s t h e 0013740 n O p e n I F S F a i l ( e c 0013760 N u m U n i t s , p l d t , 0014000 i f s ) \r \r E n q u e u e ( f s 0014020 Q , i f s ) \r r e s u l t i s 0014040 i f s \r ] \r \r / / - - - - - - - 0014060 - - - - - - - - - - - - - - - - * 0014160 - - - - - \r a n d O p e n I F 0014200 S F a i l ( c o d e , p l d 376 0014220 001 \0 n 374 t , i f s ) b e \r / 0014240 / - - - - - - - - - - - - - - - 0014260 - - - - - - - - - - - - - - - - * 0014340 - - - - - - - - - - - - - \r / / 0014360 F r e e s t h e i f s i 0014400 f n o n z e r o , c l o s e 0014420 s a l l o p e n d i s k s 0014440 n a m e d i n p l d t , \r 0014460 / / s t o r e s t h e e r 0014500 r o r c o d e i n t h e 0014520 c a l l e r ' s l v E r r o r 0014540 C o d e , a n d r e t u r n 0014560 s \r / / f a l s e f r o m 0014600 t h e c a l l e r . T h i 0014620 s p r 376 001 \0 366 M o c e d u r e 0014640 k n o w s t h a t t h e 0014660 s e c o n d a r g u m e n t \r 0014700 / / o f t h e c a l l e r 0014720 i s l v E r r o r C o d e . 0014740 \r [ \r i f i f s n e 0 t 0014760 h e n D e s t r o y I F S ( i 0015000 f s ) \r f o r i = 0 t o 0015020 n D i s k s - 1 d o \r 0015040 i f p l d t > > P L D T ^ i . 0015060 d i s k n e 0 t h e n C 0015100 l o s e T F S D i s k ( p l d t 0015120 > > P L D T ^ i . d i s k ) \r l 0015140 e t c f = C a l l e r s F 0015160 r a m e ( ) \r @ ( c f ! 5 ) = 0015200 c o d e \r R e t u r n F r o m 0015220 ( c f , f a l s 376 001 \0 < 334 e ) 0015240 \r I F S E r r o r ( e c R e t u 0015260 r n F r o m ) \r ] \r \r / / - - - 0015300 - - - - - - - - - - - - - - - - * 0015400 - - - - - - - - - \r a n d O p 0015420 e n T F S D i s k ( d r i v e , 0015440 f s ) = v a l o f \r / / - 0015460 - - - - - - - - - - - - - - - - * 0015560 - - - - - - - - - - - \r [ \r l e 0015600 t d i s k = T F S I n i t 0015620 ( s y s Z o n e , t r u e 376 001 0015640 \0 9 022 , # 4 0 0 * f s + d 0015660 r i v e , i f s D D M g r ) \r 0015700 d r i v e T a b > > D r i v e T 0015720 a b ^ d r i v e . d i s k ^ f s 0015740 = d i s k \r r e s u l t i s 0015760 d i s k \r ] \r \r / / - - - - - 0016000 - - - - - - - - - - - - - - - - * 0016100 - - - - - - - \r a n d C l o s 0016120 e T F S D i s k ( d i s k ) b 0016140 e \r / / - - - - - - - - - - - - 0016160 - - - - - - - - - - - - - - - - * 0016240 - - - 376 001 \0 217 p - - - - - - - - 0016260 - - - - - \r [ \r l e t d t e 0016300 = l v d r i v e T a b > > D 0016320 r i v e T a b ^ ( d i s k > > D 0016340 S K . d r i v e N u m b e r ) \r 0016360 T F S C l o s e ( d i s k , t 0016400 r u e ) \r f o r f s = 0 0016420 t o 1 d o \r i f d i 0016440 s k e q d t e > > D T E . d 0016460 i s k ^ f s t h e n d t e > 0016500 > D T E . d i s k ^ f s = 0 0016520 \r i f d t e > > D T E . d i s 0016540 k ^ 0 e q 0 & d t e > > 0016560 D T E . d i s k ^ 1 e q 0 0016600 t h e n d t e > > D T E . i f 0016620 s = 0 \r ] \r \f \r / / - - - - 0016640 - - - - - - - - 376 001 \0 F 253 - - - 0016660 - - - - - - - - - - - - - - - - * 0016740 - - - - - - - - - - - - - \r a n 0016760 d O p e n I F S P a r t 2 ( i 0017000 f s , l v E r r o r C o d e ) 0017020 = v a l o f \r / / - - - - - 0017040 - - - - - - - - - - - - - - - - * 0017140 - - - - - - - \r [ \r i f i f s 0017160 n e 0 t h e n / / O p 0017200 e n I F S P a r t 1 f a i l e 0017220 d . D o n o t h i n g . \r 0017240 [ \r / / o p e 376 001 \0 0017260 213 341 n t h e d i r e c t o r 0017300 y B - T r e e . N e e d 0017320 i f p f o r I F S . D i r . 0017340 \r l e t i f p = v e 0017360 c l F P ; Z e r o ( i f p , 0017400 l F P ) \r l e t i f s 0017420 D i r = O p e n F i l e ( " 0017440 I F S . D i r " , k s T y p e 0017460 R e a d O n l y , 0 , 0 , 0017500 i f p , \r 0 , 0 , 0 0017520 , i f s > > I F S . l p d t ^ 0017540 0 ) \r i f i f s D i r 0017560 e q 0 t h e n O p e n I F 0017600 S F a i l ( e c N o I F S D i r 0017620 , i f s ) \r C l o s e s 0017640 ( i f s D i r ) \r i f p > 0017660 > I 376 001 \0 x m F P . u n i t = 0017700 0 \r / / A s s i g n 0017720 e n o u g h v M e m f o r 0017740 1 0 0 0 d i s k p a g e s 0017760 p e r u n i t , u p t o 0020000 a m a x i m u m o f 3 0 0 0020020 0 \r i f s > > I F S . d i 0020040 r B T r e e = O p e n I F S 0020060 T r e e ( i f p , i f s , 0 0020100 , 0 , 0 , \r M i n ( 0020120 1 0 0 0 * i f s > > I F S . n u 0020140 m U n i t s , 3 0 0 0 ) ) \r 0020160 / / I n i t i a l i z e t 0020200 h e O p e n F i l e T a b 0020220 l e \r C r e a t e O F T ( 0020240 i f s , 1 6 ) / / m u s 0020260 t b e p o 376 001 \0 , @ w e r 0020300 o f 2 \r ] \r r e s u l t 0020320 i s i f s \r ] \r \r / / - - - - 0020340 - - - - - - - - - - - - - - - - * 0020440 - - - - - - - - \r a n d O p e 0020460 n I F S T r e e ( i f p , i f 0020500 s , C o m p a r e K e y R t n 0020520 , L e n g t h R t n , i n i 0020540 t i a l i z e T r e e , \r d i 0020560 s k P a g e s , l o g B T r e 0020600 e P a g e L e n g t h ; n u m 0020620 a r g s n a ) = v a l o f 0020640 \r / / - - - - - - - - - - - - - 0020660 - - - - - - - - - - - - 376 001 \0 % 0020700 Y - - - - - - - - - - - - - - - 0020720 - - - - - - - - - - - - - - - - * 0020760 - - - - \r [ \r D e f a u l t A r 0021000 g s ( l v n a , - 2 , D i 0021020 r C o m p a r e K e y , D i r 0021040 E n t r y L e n g t h , 0 , 0021060 0 , 0 ) \r r e s u l t i s O 0021100 p e n F P T r e e ( i f p , i 0021120 f s > > I F S . l p d t ^ ( i f 0021140 p > > I F P . u n i t ) , C o 0021160 m p a r e K e y R t n , \r L e 0021200 n g t h R t n , i n i t i a l 0021220 i z e T r e e , d i s k P a g 0021240 e s , l o g B T r e e P a g e 0021260 L e n g t h ) \r ] \r \r / / - - - 0021300 - 376 001 \0 376 q - - - - - - - - - - 0021320 - - - - - - - - - - - - - - - - * 0021400 - - - - - - - - - - - - - - \r a 0021420 n d I n i t D i s k s ( ) b 0021440 e \r / / - - - - - - - - - - - - 0021460 - - - - - - - - - - - - - - - - * 0021560 \r [ \r / / I n i t i a l i z e 0021600 v a r i o u s d i s k - r e 0021620 l a t e d d a t a s t r u c 0021640 t u r e s \r i f s D D M g r = 0021660 I F S C r e a t e D D M g r ( 0021700 ) \r d r i v 376 \0 u d 030 e T a b 0021720 = A l l o c a t e ( s y s Z o 0021740 n e , l e n D r i v e T a b + 0021760 4 ) ; Z e r o ( d r i v e T a 0022000 b , l e n D r i v e T a b + 4 0022020 ) \r f s Q = d r i v e T a b 0022040 + l e n D r i v e T a b \r o p e 0022060 n L o c k = f s Q + 2 \r ] \r 0022100 377 \0 \0 I f s G e t C r e a t e . 0022120 b c p l \0 373 230 035 g 325 \0 \0 376 001 \0 M 0022140 202 / / I F S G e t C r e a t e 0022160 . b c p l - - d i a l o g u 0022200 e t o g e t p a r a m e t 0022220 e r s f o r I F S c r e a 0022240 t i o n \r / / C o p y r i g h 0022260 t X e r o x C o r p o r a t 0022300 i o n 1 9 7 9 , 1 9 8 0 \r \r 0022320 / / L a s t m o d i f i e d 0022340 N o v e m b e r 1 4 , 1 9 0022360 8 1 1 0 : 3 8 A M b y 0022400 T a f t \r \r g e t " I f s . d 0022420 e c l " \r g e t " I f s F i l 0022440 e s . d e c l " \r \r e x t e r n 0022460 a l \r [ \r / / O u t g o i n g 0022500 p r o c e d u r e s \r G e t C 0022520 r e a t e P a r a m s ; D e s 0022540 t 376 001 \0 3 201 r o y C r e a t e P 0022560 a r a m s \r \r / / I n c o m i 0022600 n g p r o c e d u r e s \r A l 0022620 l o c a t e ; F r e e ; Z e 0022640 r o ; F r e e P o i n t e r \r 0022660 I n i t C m d ; G e t S t r i 0022700 n g ; G e t N u m b e r ; C 0022720 o n f i r m ; E n a b l e C a 0022740 t c h ; E n d C a t c h \r B e 0022760 g i n D e f a u l t P h r a s e 0023000 ; E n d D e f a u l t P h r a 0023020 s e ; C m d E r r o r ; B a 0023040 c k u p P h r a s e ; T e l n 0023060 e t A b o r t i n g \r C l o s e 0023100 s ; W s s ; W n s ; P u t 0023120 T e m p l a t e ; E x t r a c 0023140 t S u b s t 376 001 \0 215 ] r i n g \r 0023160 \r / / I n c o m i n g s t a 0023200 t i c s \r s y s Z o n e ; d r 0023220 i v e T a b \r ] \r \f \r / / - - - 0023240 - - - - - - - - - - - - - - - - * 0023340 - - - - - - - - - \r l e t G e 0023360 t C r e a t e P a r a m s ( i f 0023400 s T y p e ) = v a l o f \r / 0023420 / - - - - - - - - - - - - - - - 0023440 - - - - - - - - - - - - - - - - * 0023520 - - - - - - - - - - - - - \r / / 0023540 R e q u e s t s t 376 001 \0 336 # 0023560 h e o p e r a t o r t o s 0023600 p e c i f y p a r a m e t e r 0023620 s f o r c r e a t i n g a 0023640 n I F S . \r / / i f s T y p 0023660 e s h o u l d b e e i t h 0023700 e r i f s T y p e P r i m a r 0023720 y o r i f s T y p e B a c k 0023740 u p . \r / / R e t u r n s a 0023760 f i l l e d - i n C P a r 0024000 s t r u c t u r e ( s e e i 0024020 f s . d e c l ) . \r / / R e t 0024040 u r n s z e r o i f t h e 0024060 u s e r a b o r t s o u t 0024100 . \r [ \r l e t c P a r , c s 0024120 = n i l , n i l \r [ 0024140 / / r e p e a t \r c s 0024160 376 001 \0 ! 377 = I n i t C m d ( 0024200 1 0 0 + 3 0 * n D r i v e s , 0024220 n D r i v e s + 5 ) \r i f 0024240 c s n e 0 b r e a k \r 0024260 i f T e l n e t A b o r t 0024300 i n g ( ) r e s u l t i s 0 0024320 \r ] r e p e a t \r i f 0024340 E n a b l e C a t c h ( c s ) 0024360 t h e n [ D e s t r o y C r 0024400 e a t e P a r a m s ( c P a r ) 0024420 ; E n d C a t c h ( c s ) ] 0024440 \r c P a r = A l l o c a t e 0024460 ( s y s Z o n e , l e n C P a 0024500 r ) \r Z e r o ( c P a r , l e 0024520 n C P a r ) \r c P a r > > C P a 0024540 r . t y p e = i f s T y p e 0024560 \r u n l e 376 001 \0 002 313 s s C o n 0024600 f i r m ( c s , " * n D o y 0024620 o u r e a l l y w a n t t 0024640 o c r e a t e a f i l e 0024660 s y s t e m ? " ) \r d o 0024700 [ C l o s e s ( c s ) ; D e 0024720 s t r o y C r e a t e P a r a m 0024740 s ( c P a r ) ; r e s u l t i 0024760 s 0 ] \r \r l e t e r r M s 0025000 g = v a l o f \r [ \r 0025020 W s s ( c s , " * n N u m 0025040 b e r o f d i s k u n i t 0025060 s : " ) \r l e t n u m 0025100 U n i t s = G e t N u m b e 0025120 r ( c s ) \r i f n u m U 0025140 n i t s l e 0 % n u m U 0025160 n i t s g r n D 376 001 \0 305 017 r 0025200 i v e s r e s u l t i s " 0025220 ? " \r c P a r > > C P a r 0025240 . n u m U n i t s = n u m U 0025260 n i t s \r f o r u = 0025300 0 t o n u m U n i t s - 1 0025320 d o \r [ \r 0025340 P u t T e m p l a t e ( c s , 0025360 " * n L o g i c a l u n i t 0025400 $ 2 O = D i s k d r i v 0025420 e : " , u ) \r l 0025440 e t p U n i t = G e t N u 0025460 m b e r ( c s , 8 ) \r 0025500 i f p U n i t l s 0 0025520 % p U n i t g e n D r i v 0025540 e s r e s u l t i s " ? " 0025560 \r i f d r i v e 376 0025600 001 \0 | 321 T a b > > D r i v e T a 0025620 b ^ p U n i t . i f s n e 0 0025640 r e s u l t i s " d r i v 0025660 e a l r e a d y i n u s e 0025700 " \r f o r i = 0025720 0 t o u - 1 d o \r 0025740 i f p U n i t e q 0025760 c P a r > > C P a r . l p M a 0026000 p ^ i r e s u l t i s " d 0026020 r i v e r e p e a t e d " \r 0026040 c P a r > > C P a r . 0026060 l p M a p ^ u = p U n i t \r 0026100 ] \r t e s t 0026120 i f s T y p e e q i f s T y 0026140 p e P r i m a r y \r 0026160 i f s o c P a r > > C P a r . 0026200 i d = 376 001 \0 { 233 E x t r a c 0026220 t S u b s t r i n g ( " P r i m 0026240 a r y " ) \r i f n o 0026260 t \r [ \r 0026300 W s s ( c s , " * 0026320 n F i l e s y s t e m I D : 0026340 " ) \r c P a 0026360 r > > C P a r . i d = G e t 0026400 S t r i n g ( c s ) \r 0026420 ] \r W s s ( c s , 0026440 " * n F i l e s y s t e m 0026460 n a m e : " ) \r l e t 0026500 B r e a k C r ( c s , c h a r 0026520 ) = c h a r e q $ * n \r 0026540 c P a r > > C P a r . n a 0026560 m e = G e t S t r i n g ( c 0026600 s , B r e a k C 376 001 \0 c T r ) 0026620 \r c P a r > > C P a r . d 0026640 i r S i z e = n u m U n i t 0026660 s * 1 0 0 0 / / d e f a u 0026700 l t d i r e c t o r y s i z 0026720 e \r W s s ( c s , " * n 0026740 D i r e c t o r y s i z e ( 0026760 p a g e s ) : " ) \r B e 0027000 g i n D e f a u l t P h r a s e 0027020 ( c s ) \r W n s ( c s , 0027040 c P a r > > C P a r . d i r S i 0027060 z e ) \r E n d D e f a u l 0027100 t P h r a s e ( c s ) \r c 0027120 P a r > > C P a r . d i r S i z 0027140 e = G e t N u m b e r ( c s 0027160 ) \r r e s u l t i s 0 \r 0027200 ] \r i f e r r M s g 376 001 0027220 \0 341 213 n e 0 t h e n \r 0027240 [ C m d E r r o r ( c s , 0027260 e r r M s g ) ; B a c k u p P 0027300 h r a s e ( c s ) ] \r \r l e t 0027320 o k = C o n f i r m ( c s 0027340 , " * n O k ? " ) \r C l o s e 0027360 s ( c s ) \r i f o k r e s u 0027400 l t i s c P a r \r D e s t r o 0027420 y C r e a t e P a r a m s ( c P 0027440 a r ) \r ] r e p e a t \r \r / / 0027460 - - - - - - - - - - - - - - - - * 0027560 - - - - - - - - - - - - \r a n d 0027600 D e s t r o y C r e a t e P a 0027620 r a m 376 \0 244 $ 303 s ( c P a r ) 0027640 b e \r / / - - - - - - - - - - - 0027660 - - - - - - - - - - - - - - - - * 0027760 - \r [ \r F r e e P o i n t e r ( 0030000 l v c P a r > > C P a r . i d 0030020 , l v c P a r > > C P a r . 0030040 n a m e ) \r F r e e ( s y s Z o 0030060 n e , c P a r ) \r ] \r 377 \0 \0 I 0030100 f s C r e a t e 1 . b c p l \0 373 0030120 223 361 307 250 \0 \0 376 001 \0 226 6 / / I F 0030140 S C r e a t e 1 . b c p l - - 0030160 c o d e f o r c r e a t i 0030200 n g a n I n t e r i m F i 0030220 l e S y s t e m \r / / \t T h i 0030240 s p o r t i o n m u s t b 0030260 e r e s i d e n t d u r i n 0030300 g P r i m a r y I F S c r 0030320 e a t i o n \r / / C o p y r i 0030340 g h t X e r o x C o r p o r 0030360 a t i o n 1 9 7 9 \r \r / / L 0030400 a s t m o d i f i e d J u l 0030420 y 1 4 , 1 9 7 9 9 : 0 7 0030440 P M b y T a f t \r \r g e t 0030460 " i f s . d e c l " \r g e t 0030500 " i f s f i l e s . d e c l " \r 0030520 g e t " d i s k s . 376 001 \0 266 214 0030540 d " \r g e t " t f s . d " \r g 0030560 e t " i f s d i r s . d e c l 0030600 " \r g e t " s t r e a m s . d 0030620 " \r \r e x t e r n a l \r [ \r / / 0030640 O u t g o i n g p r o c e d 0030660 u r e s \r C r e a t e I F S P a 0030700 r t 1 ; C r e a t e I F S D i 0030720 s k ; O p e n S y s t e m F i 0030740 l e \r \r / / I n c o m i n g 0030760 p r o c e d u r e s \r T F S N e 0031000 w D i s k ; T F S I n i t ; 0031020 T F S C l o s e ; T F S D i s 0031040 k M o d e l ; A s s i g n D i 0031060 s k P a g e ; R e l e a s e D 0031100 i s k P a g e \r A l l o c a t e 0031120 ; F r e e ; M o v e B l o c 0031140 376 001 \0 \ 356 k ; Z e r o ; R e 0031160 a d C a l e n d a r ; C o p y 0031200 S t r i n g \r O p e n F i l e ; 0031220 W r i t e B l o c k ; C l o 0031240 s e s ; S y s E r r ; I F S 0031260 E r r o r \r F i l e L e n g t h 0031300 ; P o s i t i o n P a g e \r \r 0031320 / / I n c o m i n g s t a t 0031340 i c s \r s y s Z o n e \r ] \r \f \r 0031360 / / - - - - - - - - - - - - - - 0031400 - - - - - - - - - - - - - - - - * 0031460 - - - - - - - - - - - - - \r l e 0031500 t C r e a t e I F S P a r t 1 0031520 ( c P a r ) = v a l o f \r / 0031540 / - - - - 376 001 \0 241 L - - - - - - 0031560 - - - - - - - - - - - - - - - - * 0031660 - \r / / P e r f o r m s t h e 0031700 f i r s t p a r t o f I 0031720 F S c r e a t i o n . I t 0031740 c a l l s o n l y t h o s 0031760 e \r / / p r o c e d u r e s t 0032000 h a t a r e r e s i d e n t 0032020 a t i n i t i a l i z a t i 0032040 o n t i m e s o a s t o 0032060 p e r m i t \r / / c r e a t i 0032100 n g a p r i m a r y I F S 0032120 . S p e c i f i c a l l y , 0032140 i t c r e a t e 376 001 \0 373 241 s 0032160 a v i r g i n A l t o f 0032200 i l e \r / / s y s t e m o n 0032220 e a c h p a c k a n d c r 0032240 e a t e s a l l t h e s y 0032260 s t e m f i l e s . W h e 0032300 n i t i s d o n e , \r / / 0032320 i t T F S C l o s e s a l l 0032340 u n i t s i t h a s T F 0032360 S I n i t e d , a n d i t 0032400 d o e s n o t t o u c h \r / 0032420 / t h e s y s t e m p h y s 0032440 i c a l - l o g i c a l d i s 0032460 k t a b l e , s o t h e 0032500 c a l l e r i s e x p e c t 0032520 e d \r / / t o d o a n O p 0032540 e n I F S P a r t 1 b e f o 376 0032560 001 \0 370 I r e c a l l i n g C 0032600 r e a t e I F S P a r t 2 . \r / 0032620 / R e t u r n s z e r o i f 0032640 s u c c e s s f u l a n d 0032660 a n e r r o r c o d e i f 0032700 u n s u c c e s s f u l . \r [ 0032720 \r / / b u i l d h o m e b l 0032740 o c k \r l e t h o m e = A 0032760 l l o c a t e ( s y s Z o n e , 0033000 l e n H o m e ) \r Z e r o ( h 0033020 o m e , l e n H o m e ) \r h o 0033040 m e > > H o m e . t y p e = 0033060 c P a r > > C P a r . t y p e \r 0033100 h o m e > > H o m e . n u m U n 0033120 i t s = c P a r > > C P a r 0033140 . n u m U n i t s \r R e a d C a 0033160 l e n d 376 001 \0 217 352 a r ( l v h 0033200 o m e > > H o m e . c r e a t e 0033220 d ) \r C o p y S t r i n g ( l v 0033240 h o m e > > H o m e . i d , 0033260 c P a r > > C P a r . i d ) \r C 0033300 o p y S t r i n g ( l v h o m 0033320 e > > H o m e . n a m e , c P 0033340 a r > > C P a r . n a m e ) \r \r 0033360 / / C h e c k a l l t h e 0033400 d r i v e s t o m a k e 0033420 s u r e t h e y a r e t h 0033440 e r e a n d \r / / t o s e 0033460 e w h e t h e r t h e y a 0033500 r e T - 3 0 0 s \r f o r u n 0033520 i t = 0 t o c P a r > > 0033540 C P a r . n u m U n i t s - 1 0033560 d o \r [ \r 376 001 \0 ) 021 0033600 l e t d i s k = T F S I n 0033620 i t ( s y s Z o n e , f a l s 0033640 e , c P a r > > C P a r . l p 0033660 M a p ^ u n i t , 0 , t r u 0033700 e ) \r i f d i s k e q 0033720 0 t h e n [ F r e e ( s 0033740 y s Z o n e , h o m e ) ; r 0033760 e s u l t i s e c N o t O n L 0034000 i n e ] \r i f T F S D 0034020 i s k M o d e l ( d i s k ) e 0034040 q 3 0 0 t h e n \r 0034060 [ / / A d d a l o g 0034100 i c a l u n i t f o r t h 0034120 e s e c o n d h a l f o f 0034140 t h i s T - 3 0 0 \r 0034160 c P a r > > C P a r . l 376 001 0034200 \0 m 336 p M a p ^ ( h o m e > > H 0034220 o m e . n u m U n i t s ) = 0034240 # 4 0 0 + c P a r > > C P a 0034260 r . l p M a p ^ u n i t \r 0034300 h o m e > > H o m e . n u 0034320 m U n i t s = h o m e > > H 0034340 o m e . n u m U n i t s + 1 \r 0034360 ] \r T F S C l o 0034400 s e ( d i s k ) \r ] \r \r / 0034420 / d o t h e i n i t i a l i 0034440 z a t i o n f o r e a c h 0034460 l o g i c a l u n i t \r l e t 0034500 r e s = n i l \r f o r u 0034520 n i t = 0 t o h o m e > 0034540 > H o m e . n u m U n i t s - 1 0034560 d o \r [ \r r e s 0034600 = C 376 001 \0 315 ( r e a t e I F S 0034620 D i s k ( u n i t , c P a r > 0034640 > C P a r . l p M a p ^ u n i t 0034660 , h o m e , c P a r > > C P 0034700 a r . d i r S i z e ) \r i 0034720 f r e s n e 0 b r e a k 0034740 \r ] \r \r F r e e ( s y s Z 0034760 o n e , h o m e ) \r r e s u l 0035000 t i s r e s \r ] \r \f \r / / - - 0035020 - - - - - - - - - - - - - - - - * 0035120 - - - - - - - - - \r a n d C r 0035140 e a t e I F S D i s k ( u n i t 0035160 , d r i v e , h o m e , d 0035200 i r S i z e ) 376 001 \0 300 276 = v 0035220 a l o f \r / / - - - - - - - - - 0035240 - - - - - - - - - - - - - - - - * 0035340 - - \r / / I n i t i a l i z e 0035360 s l o g i c a l u n i t o 0035400 f a n I F S . R e t u r 0035420 n s z e r o i f s u c c e 0035440 s s f u l a n d a n \r / / 0035460 e r r o r c o d e i f u n 0035500 s u c c e s s f u l . D r i 0035520 v e m a y b e # 4 0 0 + d 0035540 r i v e # t o d e s i g n a 0035560 t e t h e \r / / s e c o n d 0035600 h a l f o f a T - 376 001 \0 0035620 313 < 3 0 0 . d i r S i z e 0035640 i s t h e n u m b e r o f 0035660 p a g e s t o p r e a l l 0035700 o c a t e \r / / f o r I F S 0035720 . d i r ; n e e d e d o n l 0035740 y i f u n i t = 0 . \r [ \r / 0035760 / E r a s e t h e d i s k 0036000 \r u n l e s s T F S N e w D i 0036020 s k ( s y s Z o n e , d r i v 0036040 e ) r e s u l t i s e c C a 0036060 n t T F S N e w D i s k \r \r / / 0036100 C r e a t e I F S . H o m e 0036120 . \r / / A l l o c a t e s y 0036140 s t e m f i l e s n e x t 0036160 t o t h e D D i n t h e 0036200 m i d d l e o f t h e d 0036220 i s 376 001 \0 345 376 k . \r l e t d i 0036240 s k = T F S I n i t ( s y s 0036260 Z o n e , t r u e , d r i v 0036300 e ) \r i f d i s k e q 0 0036320 r e s u l t i s e c C a n t T 0036340 F S I n i t \r R e l e a s e D i 0036360 s k P a g e ( d i s k , A s s 0036400 i g n D i s k P a g e ( d i s k 0036420 , d i s k > > T F S D S K . V 0036440 D A d i s k D D ^ 1 ) ) \r l e t 0036460 s t r = O p e n S y s t e 0036500 m F i l e ( d i s k , " I F S 0036520 . H o m e " ) \r h o m e > > H o 0036540 m e . t h i s U n i t = u n 0036560 i t \r W r i t e B l o c k ( s t 0036600 r , h o m e , l e n H o m e 0036620 ) \r C l o s e 376 001 \0 356 s ( s t 0036640 r ) \r \r / / I f t h i s i 0036660 s l o g i c a l u n i t 0 0036700 , c r e a t e I F S . D i r 0036720 . \r / / I f u n i t 0 o 0036740 f a p r i m a r y I F S , 0036760 c r e a t e o t h e r s y 0037000 s t e m f i l e s a l s o . 0037020 \r i f u n i t e q 0 t h 0037040 e n \r [ \r C r e a t 0037060 e S y s t e m F i l e ( d i s k 0037100 , " I F S . D i r " , d i r 0037120 S i z e ) \r i f h o m e 0037140 > > H o m e . t y p e e q i 0037160 f s T y p e P r i m a r y t h 0037200 e n \r [ \r 0037220 C r e a t e S y s t e 376 001 \0 315 0037240 \v m F i l e ( d i s k , " I F 0037260 S . S w a p " , i f s S w a p 0037300 P a g e s ) \r C r e 0037320 a t e S y s t e m F i l e ( d i 0037340 s k , " I F S . E r r o r s " 0037360 , i f s E r r o r P a g e s ) 0037400 \r C r e a t e S y s 0037420 t e m F i l e ( d i s k , " I 0037440 F S . S y m s " , i f s S y m 0037460 s P a g e s ) \r ] \r 0037500 ] \r R e l e a s e D i s k 0037520 P a g e ( d i s k , A s s i g 0037540 n D i s k P a g e ( d i s k , 0037560 0 ) ) \r T F S C l o s e ( d i s 0037600 k ) \r r e s u l t i s 0 \r ] \r 0037620 \r / / - - - - - - - - - - - - - 0037640 - 376 001 \0 213 z - - - - - - - - - - 0037660 - - - - - - - - - - - - - - - - * 0037740 - - - \r a n d C r e a t e S y 0037760 s t e m F i l e ( d i s k , n 0040000 a m e , p a g e s ) b e \r / 0040020 / - - - - - - - - - - - - - - - 0040040 - - - - - - - - - - - - - - - - * 0040120 - - - - - - - - - - - - \r / / C 0040140 r e a t e s a b l a n k f 0040160 i l e o f t h e s p e c i 0040200 f i e d l e n g t h ( i n 0040220 p a g e s ) \r [ \r l e t s t r 0040240 = O p e 376 001 \0 ? \b n S y s t 0040260 e m F i l e ( d i s k , n a m 0040300 e ) \r P o s i t i o n P a g e ( 0040320 s t r , p a g e s ) \r C l o s 0040340 e s ( s t r ) \r ] \r \r / / - - - 0040360 - - - - - - - - - - - - - - - - * 0040460 - - - - - - - - \r a n d O p e 0040500 n S y s t e m F i l e ( d i s k 0040520 , n a m e ) = v a l o f \r 0040540 / / - - - - - - - - - - - - - - 0040560 - - - - - - - - - - - - - - - - * 0040640 - - - - - - - - - - - 376 \0 177 334 203 0040660 - - \r [ \r l e t s t r = O 0040700 p e n F i l e ( n a m e , 0 , 0040720 0 , 0 , 0 , 0 , 0 , 0040740 0 , d i s k ) \r i f s t r 0040760 e q 0 t h e n I F S E r r 0041000 o r ( e c C r e a t e E s s e n 0041020 t i a l F i l e , n a m e ) \r 0041040 r e s u l t i s s t r \r ] \r 377 0041060 \0 \0 I f s C r e a t e 2 . b c p 0041100 l \0 373 230 # 355 ( \0 \0 376 001 \0 i C / / 0041120 I F S C r e a t e 2 . b c p l 0041140 - - c o d e f o r c r e 0041160 a t i n g a n I n t e r i m 0041200 F i l e S y s t e m \r / / \t 0041220 T h i s p o r t i o n n e e 0041240 d n o t b e i n t h e 0041260 r e s i d e n t i n i t i a l 0041300 i z a t i o n \r / / C o p y r 0041320 i g h t X e r o x C o r p o 0041340 r a t i o n 1 9 7 9 , 1 9 8 0041360 0 , 1 9 8 1 \r \r / / L a s t 0041400 m o d i f i e d N o v e m b 0041420 e r 1 9 , 1 9 8 1 9 : 1 0041440 9 A M b y T a f t \r \r g e 0041460 t " i f s . d e c l " \r g e t 0041500 " i f s f i l e s . d e c 376 001 0041520 \0 375 221 l " \r g e t " i f s d i 0041540 r s . d e c l " \r g e t " s t 0041560 r e a m s . d " \r \r e x t e r n 0041600 a l \r [ \r / / O u t g o i n g 0041620 p r o c e d u r e s \r C r e a 0041640 t e I F S ; C r e a t e I F S 0041660 P a r t 2 ; C r e a t e S y s 0041700 t e m E n t r i e s ; \r \r / / 0041720 I n c o m i n g p r o c e d u 0041740 r e s \r C r e a t e I F S P a r 0041760 t 1 ; O p e n I F S P a r t 1 0042000 ; O p e n I F S P a r t 2 ; 0042020 C l o s e I F S \r O p e n I F S 0042040 T r e e ; C l o s e B T r e e 0042060 \r T F S D i s k M o d e l ; O 0042100 p e n D i s k ; O p e n S y s 0042120 t e m 376 001 \0 214 Q F i l e ; C r 0042140 e a t e I F S D i s k \r C r e a 0042160 t e O F T ; D e s t r o y O F 0042200 T ; C r e a t e U s e r ; T 0042220 r a n s f e r L e a d e r P a g 0042240 e \r C r e a t e F D ; D e s t 0042260 r o y F D ; L o o k u p I F S 0042300 F i l e ; G e t B u f f e r F 0042320 o r F D ; L o c k D i r F D ; 0042340 U n l o c k D i r F D \r C r e 0042360 a t e D i r e c t o r y E n t r 0042400 y ; U p d a t e D I F R e c ; 0042420 U p d a t e P a g e U s a g e 0042440 \r L o c k ; U n l o c k ; E 0042460 x t e n d S t a c k C a l l ; 0042500 I F S E r r o r \r C o p y S t r 0042520 i n g ; C r e 376 001 \0 002 360 a t e 0042540 S t r i n g S t r e a m ; P u 0042560 t T e m p l a t e \r D e f a u l 0042600 t A r g s ; S y s A l l o c a 0042620 t e ; S y s F r e e ; M o v 0042640 e B l o c k ; Z e r o \r O p e 0042660 n F i l e ; K s H i n t L a s 0042700 t P a g e F a ; C l o s e s ; 0042720 R e a d B l o c k ; W r i t 0042740 e B l o c k \r \r / / I n c o m 0042760 i n g s t a t i c s \r d r i v 0043000 e T a b ; o p e n L o c k \r ] 0043020 \r \r / / - - - - - - - - - - - - 0043040 - - - - - - - - - - - - - - - - * 0043120 - - - - - - - - - - - - - 376 001 \0 0043140 353 345 - - \r l e t C r e a t e I 0043160 F S ( c P a r , l v E r r o r 0043200 ) = E x t e n d S t a c k C 0043220 a l l ( 3 0 0 0 , D o C r e a 0043240 t e , c P a r , l v E r r o 0043260 r ) \r / / - - - - - - - - - - - 0043300 - - - - - - - - - - - - - - - - * 0043400 \r / / C r e a t e s a n d 0043420 o p e n s a n I F S u s i 0043440 n g t h e p a r a m e t e r 0043460 s s u p p l i e d i n c P 0043500 a r . \r / / i d a n d n a 0043520 m e a r e s t r i n g s t 0043540 o 376 001 \0 265 K i n s e r t i n 0043560 t o t h e h o m e b l o c 0043600 k . \r / / n u m U n i t s i 0043620 s t h e n u m b e r o f 0043640 d i s k u n i t s i n t h 0043660 e f i l e s y s t e m . \r / 0043700 / l p M a p i s a v e c 0043720 t o r d e s c r i b i n g t 0043740 h e l o g i c a l - t o - p h 0043760 y s i c a l u n i t \r / / n 0044000 u m b e r m a p . i f s T 0044020 y p e i s o n e o f i f 0044040 s T y p e P r i m a r y o r 0044060 i f s T y p e B a c k u p . \r / 0044100 / I f s u c c e s s f u l , 0044120 r e t u r n s t h e i f s 0044140 s t r u c t 376 001 \0 376 363 u r e . 0044160 I f u n s u c c e s s f u 0044200 l , \r / / s t o r e s a n 0044220 e r r o r c o d e i n @ l 0044240 v E r r o r a n d r e t u r 0044260 n s z e r o . \r \r / / - - - - 0044300 - - - - - - - - - - - - - - - - * 0044400 - - - - - - - \r a n d D o C r 0044420 e a t e ( c P a r , l v E r r 0044440 o r ) = v a l o f \r / / - - 0044460 - - - - - - - - - - - - - - - - * 0044540 - - - - - - - - - - - - 376 001 \0 006 0044560 375 - - - - - - - - - - - - - \r [ 0044600 \r @ l v E r r o r = C r e a 0044620 t e I F S P a r t 1 ( c P a r ) 0044640 \r i f @ l v E r r o r n e 0044660 0 r e s u l t i s 0 \r L o c 0044700 k ( o p e n L o c k , t r u e 0044720 ) \r l e t i f s = O p e n 0044740 I F S P a r t 1 ( c P a r > > C 0044760 P a r . i d , l v E r r o r ) 0045000 \r i f i f s n e 0 t h e 0045020 n \r [ \r C r e a t e 0045040 I F S P a r t 2 ( i f s ) \r 0045060 i f s = O p e n I F S P a 0045100 r t 2 ( i f s , l v E r r o r 0045120 ) \r ] \r U n l o c k ( o p 0045140 e n L o c k ) \r r e s u l t i s 0045160 376 001 \0 E 261 i f s \r ] \r \f \r / / 0045200 - - - - - - - - - - - - - - - - * 0045300 - - - - - - - - - - - \r a n d 0045320 C r e a t e I F S P a r t 2 ( i 0045340 f s ) b e \r / / - - - - - - - 0045360 - - - - - - - - - - - - - - - - * 0045460 - - - - \r / / P e r f o r m s 0045500 t h e s e c o n d p a r t 0045520 o f I F S c r e a t i o n 0045540 , g i v e n t h e i f s 0045560 s t r u c t 376 001 \0 003 # u r e \r / 0045600 / r e t u r n e d b y O p 0045620 e n I F S P a r t 1 . I t 0045640 i n i t i a l i z e s t h e 0045660 d i r e c t o r y B - t r e e 0045700 , \r / / e n t e r s a l l 0045720 s y s t e m f i l e s i n t 0045740 o i t , a n d c l o s e s 0045760 i t . \r [ \r / / i n i t i a 0046000 l i z e t h e B - t r e e \r 0046020 l e t f p = v e c l F P 0046040 \r T F S N a m e T o F P ( " I F 0046060 S . D i r " , i f s > > I F S 0046100 . l p d t ^ 0 , f p ) \r i f s 0046120 > > I F S . d i r B T r e e = 0046140 O p e n I F S T r e e ( f p , 0046160 i f s , 0 , 0 , 376 001 \0 v 317 0046200 t r u e , 1 0 0 0 ) \r C r e 0046220 a t e O F T ( i f s , 8 ) \r \r 0046240 / / m a k e i n i t i a l 0046260 D i r e c t o r y I n f o r m 0046300 a t i o n F i l e s \r m a n i 0046320 f e s t c a p W h e e l = 0046340 # 1 0 0 0 0 0 r s h i f t o 0046360 f f s e t C a p a b i l i t i 0046400 e s . w h e e l \r C r e a t e U 0046420 s e r ( " S y s t e m " , " i 0046440 f s " , 1 0 0 0 0 , 0 , c 0046460 a p W h e e l , t r u e , i 0046500 f s ) \r Z e r o W r i t e D a t 0046520 e ( i f s , " < S y s t e m > 0046540 ! 1 " ) \r i f i f s > > I F S 0046560 . t y p e e q i f s T y p e 0046600 376 001 \0 x \f P r i m a r y t h e 0046620 n \r [ \r C r e a t e 0046640 U s e r ( " D e f a u l t - U s 0046660 e r " , " * n " , 1 0 0 0 , 0046700 0 , 0 , t r u e , i f s 0046720 ) \r C r e a t e U s e r ( 0046740 " M a i l " , " * n " , 1 0 0046760 0 0 0 , " S y s t e m " , 0 0047000 , f a l s e , i f s ) \r 0047020 Z e r o W r i t e D a t e ( i 0047040 f s , " < D e f a u l t - U s 0047060 e r > ! 1 " ) \r Z e r o W 0047100 r i t e D a t e ( i f s , " < 0047120 M a i l > ! 1 " ) \r ] \r \r 0047140 / / m a k e d i r e c t o r 0047160 y e n t r i e s i n < S y 0047200 s t e m > 376 001 \0 316 341 f o r a 0047220 l l s y s t e m f i l e s \r 0047240 C r e a t e S y s t e m E n t r 0047260 y ( i f s , 0 , " I F S . D 0047300 i r " ) \r i f i f s > > I F S 0047320 . t y p e e q i f s T y p e 0047340 P r i m a r y t h e n \r 0047360 [ \r C r e a t e S y s t e 0047400 m E n t r y ( i f s , 0 , " 0047420 I F S . S w a p " ) \r C r 0047440 e a t e S y s t e m E n t r y ( 0047460 i f s , 0 , " I F S . E r r 0047500 o r s " , 0 , f t T e x t , 0047520 t r u e ) \r C r e a t e 0047540 S y s t e m E n t r y ( i f s , 0047560 0 , " I F S . S y m s " , 0047600 0 , 0 , t r u e 376 001 \0 221 334 ) 0047620 \r ] \r f o r i = 0 0047640 t o i f s > > I F S . n u m U 0047660 n i t s - 1 d o C r e a t e 0047700 S y s t e m E n t r i e s ( i f 0047720 s , i ) \r \r C l o s e B T r e 0047740 e ( i f s > > I F S . d i r B T 0047760 r e e ) \r i f s > > I F S . d i 0050000 r B T r e e = 0 \r u n l e s 0050020 s D e s t r o y O F T ( i f s 0050040 ) d o I F S E r r o r ( e c 0050060 C a n t D e s t r o y O F T ) \r 0050100 ] \r \f \r / / - - - - - - - - - - 0050120 - - - - - - - - - - - - - - - - * 0050200 - - - - - - - - - - - - - - - 376 0050220 001 \0 g 034 - - \r a n d Z e r o W 0050240 r i t e D a t e ( i f s , n a 0050260 m e ) b e \r / / - - - - - - - 0050300 - - - - - - - - - - - - - - - - * 0050400 - - - - \r / / T h e p u r p 0050420 o s e o f t h i s e x e r 0050440 c i s e i s t o c a u s e 0050460 t h e f i l e t o b e 0050500 v e r y o l d \r / / a n d 0050520 h e n c e e l i g i b l e f 0050540 o r r e s t o r a t i o n b 0050560 y t h e b a c k u p s y s 0050600 t e m . T h i s i s n e 0050620 c e s s 376 001 \0 E u a r y \r / / 0050640 f o r < S y s t e m > ! 1 a 0050660 n d < D e f a u l t - U s e r 0050700 > ! 1 , s i n c e t h e s e 0050720 a r e c r e a t e d b y \r 0050740 / / C r e a t e I F S w i t 0050760 h d u m m y i n f o r m a t 0051000 i o n a n d t h e r e a l 0051020 s t u f f m u s t b e r 0051040 e s t o r e d \r / / f r o m 0051060 t h e b a c k u p s y s t e 0051100 m . \r [ \r l e t f d = L o 0051120 o k u p I F S F i l e ( n a m e 0051140 , l c V E x p l i c i t , 0 0051160 , i f s ) \r i f f d e q 0051200 0 t h e n I F S E r r o r ( 0051220 e c T r i d e n t 376 001 \0 5 & F i 0051240 l e , n a m e ) \r l e t b u 0051260 f = G e t B u f f e r F o r 0051300 F D ( f d ) \r T r a n s f e r L 0051320 e a d e r P a g e ( f d , b u 0051340 f ) \r Z e r o ( l v b u f > > 0051360 I L D . w r i t t e n , 2 ) \r 0051400 T r a n s f e r L e a d e r P a 0051420 g e ( f d , b u f , t r u e 0051440 ) \r S y s F r e e ( b u f ) \r D 0051460 e s t r o y F D ( f d ) \r ] \r \r 0051500 / / - - - - - - - - - - - - - - 0051520 - - - - - - - - - - - - - - - - * 0051600 - - - - - - - - - - - - - \r a n 0051620 d T F S N a m e T o F P ( 376 001 0051640 \0 321 G n a m e , d i s k , f 0051660 p ) = v a l o f \r / / - - - 0051700 - - - - - - - - - - - - - - - - * 0052000 - - - - - - - - \r / / L o o k 0052020 s u p t h e T F S f i l 0052040 e o n t h e s p e c i f i 0052060 e d d i s k a n d s t o r 0052100 e s t h e \r / / f i l e ' s 0052120 F P i n t h e s t r u c 0052140 t u r e p o i n t e d t o 0052160 b y f p . \r / / R e t u r n 0052200 s t h e s i z e o f t h 0052220 e f i l e i n p a g e s . 0052240 \r [ \r 376 001 \0 245 034 Z e r o ( f p , 0052260 l F P ) \r l e t s t r = 0052300 O p e n F i l e ( n a m e , k 0052320 s T y p e R e a d O n l y , 0 0052340 , 0 , f p , 0 , 0 , 0 0052360 , d i s k ) \r i f s t r e 0052400 q 0 t h e n I F S E r r o 0052420 r ( e c T r i d e n t F i l e , 0052440 n a m e ) \r l e t p a g e s 0052460 = K s H i n t L a s t P a g 0052500 e F a ( s t r ) > > F A . p a g 0052520 e N u m b e r + 1 \r C l o s e s 0052540 ( s t r ) \r r e s u l t i s p 0052560 a g e s \r ] \r \f \r / / - - - - - 0052600 - - - - - - - - - - - - - - - - * 0052640 - - - - - - - - 376 001 \0 335 222 - - - 0052660 - - - - - - - - - - - - - - - - 0052700 - - - - - - - - - - - \r a n d 0052720 C r e a t e S y s t e m E n t r 0052740 i e s ( i f s , u n i t ) b 0052760 e \r / / - - - - - - - - - - - - 0053000 - - - - - - - - - - - - - - - - * 0053060 - - - - - - - - - - - - - - - \r 0053100 [ \r C r e a t e S y s t e m E n 0053120 t r y ( i f s , u n i t , " 0053140 I F S . H o m e " , t r u e ) 0053160 \r C r e a t e S y s t e m E n t 0053200 r y ( i f s , u n i t , " S 0053220 y s D i r " , t r u e ) \r C r 0053240 e a t e S y s t e m E n t 376 001 \0 0053260 214 204 r y ( i f s , u n i t , 0053300 " D i s k D e s c r i p t o r " 0053320 , t r u e ) \r ] \r \r / / - - - 0053340 - - - - - - - - - - - - - - - - * 0053440 - - - - - - - - \r a n d C r e 0053460 a t e S y s t e m E n t r y ( i 0053500 f s , u n i t , n a m e , 0053520 a p p e n d , f i l e T y p e 0053540 , w o r l d ; n u m a r g s 0053560 n a ) b e \r / / - - - - - - 0053600 - - - - - - - - - - - - - - - - * 0053660 - - 376 001 \0 214 j - - - - - - - - - 0053700 - - - - - - - - - - \r / / C r 0053720 e a t e s a n I F S d i r 0053740 e c t o r y e n t r y f o r 0053760 t h e T F S f i l e " n 0054000 a m e " \r / / o n l o g i c 0054020 a l u n i t " u n i t " . 0054040 I f " a p p e n d " i s 0054060 f a l s e o r n o t s u p 0054100 p l i e d , \r / / t h e I F 0054120 S n a m e f o r T F S f 0054140 i l e " f o o " i s " < S 0054160 y s t e m > f o o ! 1 " . \r / / 0054200 I f u n i t i s s u p p 0054220 l i e d , t h e n a m e i 0054240 s " < S y s t e m > f o o . u 0054260 ! 1 " . \r / / 376 001 \0 . 002 " w o 0054300 r l d " s h o u l d b e t 0054320 r u e i f t h e f i l e 0054340 i s t o b e r e a d a b l 0054360 e b y t h e w o r l d . \r 0054400 / / A l s o f i x e s u p 0054420 t h e l e a d e r p a g e 0054440 t o h a v e a l l c o r 0054460 r e c t I F S s t u f f . \r 0054500 [ \r D e f a u l t A r g s ( l v 0054520 n a , - 3 , f a l s e , 0054540 f t B i n a r y , f a l s e ) 0054560 \r \r / / l o o k u p t h e 0054600 s u p p l i e d T F S n a m 0054620 e \r l e t f p = v e c l 0054640 F P \r l e t p a g e s = T 0054660 F S N a m e T o F P ( n 376 001 \0 256 0054700 026 a m e , i f s > > I F S . l 0054720 p d t ^ u n i t , f p ) \r f p 0054740 > > I F P . u n i t = u n i 0054760 t \r \r / / c o n s t r u c t 0055000 I F S n a m e a n d b u i 0055020 l d F D \r l e t i f s N a m 0055040 e = S y s A l l o c a t e ( 0055060 l e n P a t h N a m e ) \r M a k 0055100 e I F S N a m e ( i f s N a m e 0055120 , n a m e , ( a p p e n d ? 0055140 u n i t , - 1 ) ) \r l e t 0055160 f d = C r e a t e F D ( i f 0055200 s N a m e , l c C r e a t e + 0055220 l c V N e x t , 0 , i f s ) 0055240 \r i f f d e q 0 t h e n 0055260 I F S E r r o r ( e c I l l e 0055300 g 376 001 \0 336 263 a l E x i s t i n g 0055320 N a m e , i f s N a m e ) \r \r 0055340 / / m a k e I F S d i r e 0055360 c t o r y e n t r y \r L o c k 0055400 D i r F D ( f d , l o c k W r 0055420 i t e ) \r M o v e B l o c k ( l 0055440 v f d > > F D . d r > > D R . 0055460 f p , f p , l F P ) \r C r e 0055500 a t e D i r e c t o r y E n t r 0055520 y ( f d ) \r \r / / f i x u p 0055540 t h e l e a d e r p a g e 0055560 \r l e t b u f = G e t B u 0055600 f f e r F o r F D ( f d ) \r T r 0055620 a n s f e r L e a d e r P a g e 0055640 ( f d , b u f ) \r m a n i f e 0055660 s t l L D = o f f s e t 0055700 I L D . p a 376 001 \0 342 032 t h N a m 0055720 e / 1 6 \r Z e r o ( b u f + l L 0055740 D , i f s > > I F S . p a g e 0055760 L e n g t h - l L D ) \r C o p y 0056000 S t r i n g ( l v b u f > > I 0056020 L D . p a t h N a m e , i f s 0056040 N a m e ) \r b u f > > I L D . r 0056060 e a d P r o t . o w n e r = 0056100 t r u e / / o n l y o w 0056120 n e r c a n r e a d \r b u f 0056140 > > I L D . r e a d P r o t . w 0056160 o r l d = w o r l d \r C o p 0056200 y S t r i n g ( l v b u f > > 0056220 I L D . a u t h o r , " S y s 0056240 t e m " ) \r b u f > > I L D . t 0056260 y p e = f i l e T y p e \r b 0056300 u f > > I L D . b y t 376 001 \0 346 254 0056320 e S i z e = 8 \r b u f > > I 0056340 L D . u n d e l e t a b l e = 0056360 t r u e \r b u f > > I L D . n 0056400 o B a c k u p = t r u e \r T 0056420 r a n s f e r L e a d e r P a g 0056440 e ( f d , b u f , t r u e ) 0056460 \r S y s F r e e ( b u f ) \r U n 0056500 l o c k D i r F D ( f d ) \r \r U 0056520 p d a t e D I F R e c ( f d , 0056540 U p d a t e P a g e U s a g e , 0056560 p a g e s ) \r D e s t r o y F 0056600 D ( f d ) \r S y s F r e e ( i f 0056620 s N a m e ) \r ] \r \r / / - - - - 0056640 - - - - - - - - - - - - - - - - * 0056720 376 001 \0 357 347 - - - - - - - - - - - 0056740 - - - - - - - - - - - - \r a n d 0056760 M a k e I F S N a m e ( i f s 0057000 N a m e , t f s N a m e , u 0057020 n i t ) b e \r / / - - - - - - 0057040 - - - - - - - - - - - - - - - - * 0057140 - - - - - \r [ \r l e t s = 0057160 C r e a t e S t r i n g S t r e 0057200 a m ( i f s N a m e , m a x P 0057220 a t h N a m e C h a r s ) \r P u 0057240 t T e m p l a t e ( s , ( u n 0057260 i t g e 0 ? " < S y s t e 0057300 m > $ S . $ O ! 1 " , " < S y 0057320 s t e m > 376 \0 # & \t $ S ! 1 " ) 0057340 , t f s N a m e , u n i t ) 0057360 \r C l o s e s ( s ) \r ] \r 377 \0 \0 0057400 I f s E x t e n d . b c p l \0 373 0057420 230 # 357 \0 \0 376 001 \0 245 R / / I F 0057440 S E x t e n d . b c p l - - 0057460 c o d e f o r e x t e n d i 0057500 n g a n I n t e r i m F i 0057520 l e S y s t e m \r / / C o p 0057540 y r i g h t X e r o x C o r 0057560 p o r a t i o n 1 9 7 9 , 1 0057600 9 8 1 \r \r / / L a s t m o d 0057620 i f i e d N o v e m b e r 1 0057640 9 , 1 9 8 1 9 : 2 4 A M 0057660 b y T a f t \r \r g e t " I 0057700 f s . d e c l " \r g e t " I f 0057720 s F i l e s . d e c l " \r \r e x 0057740 t e r n a l \r [ \r / / O u t g 0057760 o i n g p r o c e d u r e s \r 0060000 E x t e n d I F S \r \r / / I n 0060020 c o m i n g p r o c 376 001 \0 244 022 0060040 e d u r e s \r E x t e n d S t a 0060060 c k C a l l ; L o c k ; U n 0060100 l o c k \r T F S D i s k M o d e 0060120 l ; S y s A l l o c a t e ; 0060140 S y s F r e e \r W r i t e B l o 0060160 c k ; R e a d B l o c k ; C 0060200 l o s e s \r O p e n T F S D i s 0060220 k ; C r e a t e I F S D i s k 0060240 \r C r e a t e S y s t e m E n t 0060260 r i e s ; O p e n S y s t e m 0060300 F i l e \r \r / / I n c o m i n 0060320 g s t a t i c s \r d r i v e T 0060340 a b ; o p e n L o c k \r ] \r \r 0060360 / / - - - - - - - - - - - - - - 0060400 - - - - - - - - - - - - - - - - * 0060440 376 001 \0 205 c - - - - - - - - - - - 0060460 - - - - - - - - - - - - - - - - 0060500 - - \r l e t E x t e n d I F S 0060520 ( i f s , d r i v e ) = E 0060540 x t e n d S t a c k C a l l ( 3 0060560 0 0 0 , D o E x t e n d , i 0060600 f s , d r i v e ) \r / / - - - 0060620 - - - - - - - - - - - - - - - - * 0060720 - - - - - - - - \r / / E x t e 0060740 n d s a r u n n i n g I F 0060760 S b y a d d i n g a n e 0061000 w d r i v e t o i t . \r / 0061020 / R e t u r n s z e r o i 0061040 f s u c 376 001 \0 M 202 c e s s f u 0061060 l a n d a n e r r o r c 0061100 o d e i f u n s u c c e s s 0061120 f u l . \r \r / / - - - - - - - - 0061140 - - - - - - - - - - - - - - - - * 0061240 - - - \r a n d D o E x t e n d 0061260 ( i f s , d r i v e ) = v 0061300 a l o f \r / / - - - - - - - - - 0061320 - - - - - - - - - - - - - - - - * 0061420 - - \r [ \r l e t e c = E x 0061440 t e n d O n e D i s 376 001 \0 314 h k 0061460 ( i f s , d r i v e ) \r i f 0061500 e c e q 0 & T F S D i s 0061520 k M o d e l ( i f s > > I F S . 0061540 l p d t ^ ( i f s > > I F S . n 0061560 u m U n i t s - 1 ) ) e q 3 0061600 0 0 t h e n \r e c = 0061620 E x t e n d O n e D i s k ( i f 0061640 s , # 4 0 0 + d r i v e ) 0061660 / / P u t s e c o n d f i 0061700 l e s y s t e m o n T - 3 0061720 0 0 \r r e s u l t i s e c \r ] 0061740 \r \f \r / / - - - - - - - - - - - 0061760 - - - - - - - - - - - - - - - - * 0062040 - - - - - - - - - - - - - - - 376 0062060 001 \0 A 347 - \r a n d E x t e n d 0062100 O n e D i s k ( i f s , d r i 0062120 v e ) = v a l o f \r / / - - 0062140 - - - - - - - - - - - - - - - - * 0062240 - - - - - - - - - \r [ \r / / G 0062260 e t a c o p y o f t h e 0062300 h o m e b l o c k f o r 0062320 t h e e x i s t i n g i f s 0062340 \r l e t n a m e = " I F S 0062360 . H o m e " \r l e t s = O 0062400 p e n S y s t e m F i l e ( i f 0062420 s > > I F S . l p d t ^ 0 , n 0062440 a m e ) \r l e t h o m e = 0062460 S y s A 376 001 \0 \a 354 l l o c a t e 0062500 ( l e n H o m e ) \r R e a d B l 0062520 o c k ( s , h o m e , l e n 0062540 H o m e ) \r C l o s e s ( s ) \r 0062560 \r / / U p d a t e t o a c 0062600 c o u n t f o r n e w u n 0062620 i t \r l e t n e w U n i t = 0062640 h o m e > > H o m e . n u m U 0062660 n i t s \r h o m e > > H o m e . 0062700 n u m U n i t s = n e w U n 0062720 i t + 1 \r \r / / C r e a t e 0062740 v i r g i n f i l e s y s t 0062760 e m o n n e w d r i v e \r 0063000 l e t e c = C r e a t e I 0063020 F S D i s k ( n e w U n i t , 0063040 d r i v e , h o m e ) \r i f 0063060 e c e q 0 t 376 001 \0 T 033 h e 0063100 n \r [ \r L o c k ( o 0063120 p e n L o c k , t r u e ) \r \r 0063140 / / U p d a t e t h e 0063160 h o m e b l o c k s o f 0063200 a l l e x i s t i n g u n i 0063220 t s \r f o r i = 0 0063240 t o n e w U n i t - 1 d o \r 0063260 [ \r s 0063300 = O p e n S y s t e m F i l e 0063320 ( i f s > > I F S . l p d t ^ i 0063340 , n a m e ) \r h o 0063360 m e > > H o m e . t h i s U n i 0063400 t = i \r W r i t 0063420 e B l o c k ( s , h o m e , 0063440 l e n H o m e ) \r C 0063460 l o s e s ( s ) \r 376 001 0063500 \0 t E ] \r \r / / I n s 0063520 e r t t h e n e w d i s k 0063540 i n t o t h e r u n n i n 0063560 g i f s \r i f s > > I F 0063600 S . l p d t ^ n e w U n i t = 0063620 O p e n T F S D i s k ( d r i 0063640 v e & # 3 7 7 , d r i v e r 0063660 s h i f t 8 ) \r d r i v 0063700 e T a b > > D r i v e T a b ^ ( 0063720 d r i v e & # 3 7 7 ) . i f s 0063740 = i f s \r \r / / M a k 0063760 e I F S d i r e c t o r y 0064000 e n t r i e s f o r s y s t 0064020 e m f i l e s o n n e w 0064040 d i s k \r C r e a t e S y 0064060 s t e m E n t r i e s ( i f s , 0064100 n e 376 \0 ^ 263 E w U n i t ) \r 0064120 i f s > > I F S . n u m U n 0064140 i t s = n e w U n i t + 1 \r 0064160 U n l o c k ( o p e n L o 0064200 c k ) \r ] \r \r S y s F r e 0064220 e ( h o m e ) \r r e s u l t i s 0064240 e c \r ] \r 377 \0 \0 I f s D D M g 0064260 r . d e c l \0 373 227 e \ 253 \0 \0 376 001 0064300 \0 217 021 / / I f s D D M g r . d 0064320 e c l \r / / C o p y r i g h t 0064340 X e r o x C o r p o r a t i 0064360 o n 1 9 7 9 , 1 9 8 0 , 1 0064400 9 8 1 \r / / L a s t m o d i 0064420 f i e d J u n e 2 7 , 1 9 0064440 8 1 7 : 5 3 P M b y T 0064460 a f t \r \r g e t " I f s . d e 0064500 c l " \r g e t " I f s V M e m 0064520 . d e c l " \r g e t " A l t o 0064540 F i l e S y s . d " \r g e t " 0064560 D i s k s . d " \r g e t " T f 0064600 s . d " \r \r \r / / - - - - - - - 0064620 - - - - - - - - - - - - - - - - * 0064700 - - - 376 001 \0 036 / - - - - - - - - 0064720 - - - - - - - - - - \r s t r u c 0064740 t u r e I F S D D M g r : \t / 0064760 / D i s k D e s c r i p t o r 0065000 M a n a g e r \r / / - - - - - 0065020 - - - - - - - - - - - - - - - - * 0065120 - - - - - - - \r [ \r / / S t a 0065140 n d a r d d e f i n e d o p 0065160 e r a t i o n s ( f r o m D 0065200 i s k s . d ) \r @ D D M g r \r \r 0065220 / / I n s t a n c e d a t a 0065240 ( f o r t h i s i m p l e 0065260 m e n t a t i o n ) \r l o c k 0065300 @ L o c k \t \t / 376 001 \0 9 274 / I 0065320 n t e r l o c k s a c c e s s 0065340 t o t h e D D M g r \r b u 0065360 f f e r w o r d \t \t / / - > 0065400 c u r r e n t l y - l o c k e 0065420 d b u f f e r ( 0 i f n 0065440 o n e ) \r v P a g e w o r d \t 0065460 \t / / V i r t u a l p a g e 0065500 n u m b e r o f b u f f e 0065520 r \r f l u s h T i m e r w o r 0065540 d \t \t / / T i m e r f o r 0065560 f u l l f l u s h o f T F 0065600 S K D s ( s e e F l u s h K 0065620 D s ) \r ] \r m a n i f e s t l 0065640 e n I F S D D M g r = s i z 0065660 e I F S D D M g r / 1 6 \r \r m 0065700 a n i f e s t \r [ \r l o g 376 001 \0 0065720 036 202 D D P a g e G r o u p S i z 0065740 e = T F S l n W o r d s P e 0065760 r P a g e - l o g V M P a g e L 0066000 e n g t h \r d d P a g e G r o u 0066020 p S i z e = 1 l s h i f t 0066040 l o g D D P a g e G r o u p S 0066060 i z e \r m a x D D D i s k P a g 0066100 e s = l e n g t h T F S D D 0066120 p r e a m b l e + l e n g t h T 0066140 F S B T \r m a x D D V M P a g e 0066160 s = m a x D D D i s k P a g 0066200 e s l s h i f t l o g D D P 0066220 a g e G r o u p S i z e \r ] \r \r 0066240 / / - - - - - - - - - - - - - - 0066260 - - - - - - - - - - - - - - - - * 0066320 - - 376 001 \0 277 K - - - - - - - - - 0066340 - - - - - - - - - - - - - - - - 0066360 - - - \r s t r u c t u r e D D 0066400 V M D : \t / / D i s k D e s c 0066420 r i p t o r V i r t u a l M 0066440 e m o r y D e s c r i p t o r 0066460 \r / / - - - - - - - - - - - - - 0066500 - - - - - - - - - - - - - - - - * 0066560 - - - - - - - - - - - - - - - \r 0066600 [ \r @ V M D \t \t \t / / S t a n 0066620 d a r d s t u f f \r d i s k 0066640 w o r d \t \t / / D i s k o w 0066660 n i n g t h i s V M D \r ] \r 0066700 m a n i f e s t l e n D D V M 0066720 D = s i z 376 001 \0 317 3 e D D 0066740 V M D / 1 6 \r \r m a n i f e s t 0066760 \r [ \r d i r t y O f f s e t = 0067000 o f f s e t T F S D S K . d 0067020 i s k B T s i z e / 1 6 - 1 \r 0067040 v m d O f f s e t = o f f s 0067060 e t T F S D S K . v e r s i o 0067100 n / 1 6 - 1 \r ] \r \r / / - - - 0067120 - - - - - - - - - - - - - - - - * 0067220 - - - - - - - - - \r s t r u c t 0067240 u r e I F S D S K : \t / / I 0067260 F S e x t e n s i o n o f 0067300 T F S D S K s t r u c t u r e 0067320 \r / / - - - - - - - - - 376 001 \0 314 0067340 K - - - - - - - - - - - - - - - 0067360 - - - - - - - - - - - - - - - - * 0067440 - - - - \r [ \r b l a n k w o r 0067460 d d i r t y O f f s e t \r d i 0067500 r t y w o r d \t \t / / n o n 0067520 z e r o i f K D H n e e d 0067540 s f l u s h i n g \r b l a n k 0067560 w o r d ( v m d O f f s e t 0067600 - d i r t y O f f s e t - 1 ) \r 0067620 v m d w o r d \t \t / / - > 0067640 D D V M D f o r t h i s d 0067660 i s k \r ] \r \r / / - - - - - - - 0067700 - - - - - - - - - - - - - - - - * 0067740 - 376 001 \0 332 6 - - - - - - - - - - 0067760 - - - - - - - - - - - - - - - - 0070000 - - - - - - - - - - \r s t r u c 0070020 t u r e I F S K D : \t / / I 0070040 F S e x t e n s i o n o f 0070060 T F S K D s t r u c t u r e \r 0070100 / / - - - - - - - - - - - - - - 0070120 - - - - - - - - - - - - - - - - * 0070200 - - - - - - - - - - - - - - \r [ 0070220 \r c u r r e n t K D @ T F S K 0070240 D \t / / t h e K D m a i n 0070260 t a i n e d b y t h e T F 0070300 S p a c k a g e \r b l a n k 0070320 w o r d ( T F S w o r d s P e 0070340 r P a g e 376 \0 Q 5 275 - 2 * ( 0070360 s i z e T F S K D / 1 6 ) ) \r 0070400 i n i t i a l K D @ T F S K D 0070420 \t / / s t a t e o f t h e 0070440 K D w h e n d i s k l a 0070460 s t o p e n e d \r ] \r 377 \0 \0 I 0070500 f s D D M g r R e s . b c p l \0 0070520 373 225 ( 303 \0 \0 \0 376 001 \0 , ~ / / I 0070540 f s D D M g r R e s . b c p l 0070560 - - T r i d e n t D i s k D 0070600 e s c r i p t o r m a n a g e 0070620 r - r e s i d e n t \r / / 0070640 C o p y r i g h t X e r o x 0070660 C o r p o r a t i o n 1 9 7 9 0070700 \r \r / / L a s t m o d i f i 0070720 e d A p r i l 1 9 , 1 9 8 0070740 0 1 2 : 2 0 P M b y T 0070760 a f t \r \r g e t " I f s D D M 0071000 g r . d e c l " \r \r e x t e r n 0071020 a l \r [ \r / / O u t g o i n g 0071040 p r o c e d u r e s \r D D P a 0071060 g e T y p e ; D D D O P A G E 0071100 I O \r D D P a g e G r o u p S i 0071120 z e ; D D P a g e G r 376 001 \0 254 0071140 026 o u p B a s e ; D D P a g e 0071160 G r o u p A l i g n \r \r / / I 0071200 n c o m i n g p r o c e d u r 0071220 e s \r A c t O n D i s k P a g e 0071240 s ; C a l l P r o c \r ] \r \r \r 0071260 / / P r o c e d u r e s c a 0071300 l l e d b y V M e m t h r 0071320 o u g h t h e D D V M D o 0071340 b j e c t \r \r / / - - - - - - - 0071360 - - - - - - - - - - - - - - - - * 0071460 - - - - - \r l e t D D P a g e 0071500 T y p e ( v m d , v P a g e ) 0071520 = 1 \r / / - - - - - - - - - 0071540 - 376 001 \0 _ 312 - - - - - - - - - - 0071560 - - - - - - - - - - - - - - - - * 0071640 - - - - - - - - \r \r / / - - - - 0071660 - - - - - - - - - - - - - - - - * 0071760 - - - - - - - - \r a n d D D P 0072000 a g e G r o u p S i z e ( v m d 0072020 , v P a g e ) = - 1 l s 0072040 h i f t l o g D D P a g e G r 0072060 o u p S i z e \r / / - - - - - - 0072100 - - - - - - - - - - - - - - - - * 0072140 - - - - - - 376 001 \0 314 & - - - - - 0072160 - - - - - - - - - - - - - - - - 0072200 - - - - - - - - - - - \r \r / / - 0072220 - - - - - - - - - - - - - - - - * 0072320 - - - - - - - - - - - \r a n d 0072340 D D P a g e G r o u p B a s e ( 0072360 v m d , v P a g e ) = v P 0072400 a g e & ( - 1 l s h i f t 0072420 l o g D D P a g e G r o u p S 0072440 i z e ) \r / / - - - - - - - - - 0072460 - - - - - - - - - - - - - - - - * 0072540 - - - - - - - - - - - 376 001 \0 F 301 0072560 - - - - - - - - \r \r / / - - - - 0072600 - - - - - - - - - - - - - - - - * 0072700 - - - - - - - - \r a n d D D P 0072720 a g e G r o u p A l i g n ( v m 0072740 d , v P a g e ) = 1 l s 0072760 h i f t l o g D D P a g e G r 0073000 o u p S i z e - 1 \r / / - - - 0073020 - - - - - - - - - - - - - - - - * 0073120 - - - - - - - - - \r \r / / - - - 0073140 - - - - - - - - - - - - - - - - 0073160 376 001 \0 210 = - - - - - - - - - - - 0073200 - - - - - - - - - - - - - - - - * 0073240 - - - - - - - - - - - - - - \r a 0073260 n d D D D O P A G E I O ( v m 0073300 d , v P a g e , c o r e , 0073320 n p , w F l a g ) b e \r / / 0073340 - - - - - - - - - - - - - - - - * 0073440 - - - - - - - - - - - - \r [ \r l 0073460 e t d i s k = v m d > > D 0073500 D V M D . d i s k \r l e t p a 0073520 g e = ( v P a g e - v m d > 0073540 > V M D . b a s e ) r s h i f 0073560 t l o g 376 001 \0 \a 340 D D P a g e 0073600 G r o u p S i z e \r l e t l a 0073620 s t P a g e = p a g e + 0073640 n p r s h i f t l o g D D P 0073660 a g e G r o u p S i z e - 1 \r 0073700 l e t C A s = v e c m a 0073720 x D D D i s k P a g e s \r f o r 0073740 p = p a g e t o l a s 0073760 t P a g e d o \r [ C A 0074000 s ! p = c o r e ; c o r e 0074020 = c o r e + T F S w o r d s 0074040 P e r P a g e ] \r / / M u s 0074060 t l e t t h e C a l l P r 0074100 o c p r o c e s s e x e c u 0074120 t e t h e d i s k o p e r 0074140 a t i o n , d u e t o \r / / 0074160 a n u g l y r 376 \0 277 + 251 e 0074200 c u r s i o n p r o b l e m 0074220 i n I n d e x e d P a g e I O 0074240 / M o r e P a g e I O . \r C a l 0074260 l P r o c ( A c t O n D i s k P 0074300 a g e s , d i s k , C A s , 0074320 ( l v d i s k > > T F S D S 0074340 K . V D A d i s k D D ) - 1 , \r 0074360 d i s k > > T F S D S K . f p 0074400 D i s k D e s c r i p t o r , 0074420 p a g e , l a s t P a g e , 0074440 ( w F l a g ? D C w r i t e D 0074460 , D C r e a d D ) ) \r ] \r 377 \0 0074500 \0 I f s D D M g r S w a p . b c 0074520 p l \0 373 230 335 367 I \0 \0 376 001 \0 \0 344 / 0074540 / I f s D D M g r S w a p . b 0074560 c p l - - T r i d e n t D 0074600 i s k D e s c r i p t o r m a 0074620 n a g e r - s w a p p a b l 0074640 e \r / / C o p y r i g h t X 0074660 e r o x C o r p o r a t i o n 0074700 1 9 7 9 , 1 9 8 0 , 1 9 8 0074720 1 , 1 9 8 2 \r / / L a s t 0074740 m o d i f i e d A p r i l 9 0074760 , 1 9 8 2 1 1 : 5 9 A M 0075000 b y T a f t \r \r g e t " I 0075020 f s D D M g r . d e c l " \r \r e 0075040 x t e r n a l \r [ \r / / O u t 0075060 g o i n g p r o c e d u r e s 0075100 \r I F S C r e a t e D D M g r ; 0075120 F l u s h K D s \r I F S O p 376 0075140 001 \0 265 b e n D D ; I F S C l o 0075160 s e D D ; I F S L o c k D D ; 0075200 I F S U n l o c k D D ; I F 0075220 S R e a d D D P a g e \r \r / / 0075240 I n c o m i n g p r o c e d u 0075260 r e s \r D D D O P A G E I O ; 0075300 D D P a g e T y p e ; D D P a 0075320 g e G r o u p A l i g n ; D D 0075340 P a g e G r o u p B a s e ; D 0075360 D P a g e G r o u p S i z e \r T 0075400 F S W r i t e D i s k D e s c r 0075420 i p t o r \r A l l o c a t e V M 0075440 e m ; F r e e V M e m ; L o 0075460 c k C e l l ; @ V R R P ; @ 0075500 V W R P \r L o c k ; U n l o c 0075520 k ; A l l o c a t e ; F r e 0075540 e ; Z 376 001 \0 302 020 e r o ; M o 0075560 v e B l o c k ; N o o p ; S 0075600 y s E r r \r \r / / O u t g o i 0075620 n g s t a t i c s \r d d V M I 0075640 \r \r / / I n c o m i n g s t 0075660 a t i c s \r s y s Z o n e ; f 0075700 s Q ; i f s D D M g r \r ] \r \r 0075720 s t a t i c d d V M I \r \r \r / 0075740 / - - - - - - - - - - - - - - - 0075760 - - - - - - - - - - - - - - - - * 0076040 - - - - - - - - - - - - - \r l e 0076060 t I F S C r e a t e D D M g r 0076100 ( ) = v a l o f \r / / - - - 0076120 - - - - - - - - - - - - - - - - 0076140 - - - - - - - - - 376 001 \0 303 4 - - 0076160 - - - - - - - - - - - - - - - - * 0076220 - - - - - - - - - - - - - - \r / 0076240 / C r e a t e s t h e D D 0076260 M g r f o r I F S , w h i 0076300 c h m a n a g e s D D p a 0076320 g e s t h r o u g h V M e m 0076340 . \r [ \r / / C r e a t e a n 0076360 d i n i t i a l i z e t h e 0076400 D D M g r \r l e t d d M g r 0076420 = A l l o c a t e ( s y s Z 0076440 o n e , l e n I F S D D M g r 0076460 ) \r Z e r o ( d d M g r , l e 0076500 n I F S D D M g r ) \r d d M g r 0076520 > > I F S D D M g r . O p e n D 0076540 D = I F S O p e n D D \r 376 001 0076560 \0 \0 o d d M g r > > I F S D D M 0076600 g r . L o c k D D = I F S L 0076620 o c k D D \r d d M g r > > I F S 0076640 D D M g r . R e a d D D P a g e 0076660 = I F S R e a d D D P a g e 0076700 \r d d M g r > > I F S D D M g r 0076720 . U n l o c k D D = I F S U 0076740 n l o c k D D \r d d M g r > > I 0076760 F S D D M g r . F l u s h D D 0077000 = N o o p \r d d M g r > > I F 0077020 S D D M g r . C l o s e D D = 0077040 I F S C l o s e D D \r d d M g 0077060 r > > I F S D D M g r . D e s t 0077100 r o y D D M g r = S y s E r 0077120 r \r L o c k C e l l ( l v d d 0077140 M g r > > I F S D D M g r . b u 0077160 f f e 376 001 \0 211 276 r ) \r \r / / C 0077200 r e a t e a n d i n i t i a 0077220 l i z e t h e D D V i r t 0077240 u a l M e m o r y I n t e r 0077260 f a c e \r d d V M I = A l l 0077300 o c a t e ( s y s Z o n e , l 0077320 e n V M I ) \r d d V M I > > V M 0077340 I . D O P A G E I O = D D D 0077360 O P A G E I O \r d d V M I > > V 0077400 M I . C l e a n u p L o c k s 0077420 = N o o p \r d d V M I > > V M 0077440 I . P a g e T y p e = D D P 0077460 a g e T y p e \r d d V M I > > V 0077500 M I . P a g e G r o u p A l i g 0077520 n = D D P a g e G r o u p A 0077540 l i g n \r d d V M I > > V M I . 0077560 P a g e G r o u 376 001 \0 023 275 p B a 0077600 s e = D D P a g e G r o u p 0077620 B a s e \r d d V M I > > V M I . 0077640 P a g e G r o u p S i z e = 0077660 D D P a g e G r o u p S i z e \r 0077700 d d V M I > > V M I . t y p e 0077720 = v m i T y p e D D \r r e s u 0077740 l t i s d d M g r \r ] \r \f \r / 0077760 / P r o c e d u r e s c a l 0100000 l e d b y T F S t h r o u 0100020 g h t h e D D M g r o b j 0100040 e c t \r \r / / - - - - - - - - - 0100060 - - - - - - - - - - - - - - - - * 0100160 - - - \r a n d I F S L o 376 001 \0 0100200 027 370 c k D D ( d d M g r , d i 0100220 s k ) b e L o c k ( l v d 0100240 d M g r > > I F S D D M g r . l 0100260 o c k , t r u e ) \r / / - - - 0100300 - - - - - - - - - - - - - - - - * 0100400 - - - - - - - - - \r / / L o c 0100420 k s t h e D D M g r ( w a 0100440 i t s i f i t i s a l r 0100460 e a d y l o c k e d ) \r \r / / 0100500 - - - - - - - - - - - - - - - - * 0100600 - - 376 001 \0 332 031 - - - - - - - - - 0100620 - \r a n d I F S U n l o c k D 0100640 D ( d d M g r , d i s k , d 0100660 i r t y ; n u m a r g s n a 0100700 ) b e \r / / - - - - - - - - - 0100720 - - - - - - - - - - - - - - - - * 0101020 - - - \r / / I f d i r t y 0101040 i s t r u e , d i r t i e s 0101060 t h e b u f f e r . \r / / 0101100 T h e n u n l o c k s t h e 0101120 b u f f e r a n d u n l o 0101140 c k s t h e D D M g r . \r [ 0101160 \r i f n a g e 3 & d i 0101200 r t y t h e 376 001 \0 / 0 n \r 0101220 [ \r V W R P ( d d M g r 0101240 > > I F S D D M g r . v P a g e 0101260 ) \r d i s k > > I F S D S 0101300 K . d i r t y = t r u e 0101320 / / K D l i k e l y t o 0101340 h a v e c h a n g e d \r 0101360 ] \r d d M g r > > I F S D D M g 0101400 r . b u f f e r = 0 \r U n l 0101420 o c k ( l v d d M g r > > I F 0101440 S D D M g r . l o c k ) \r ] \r \r 0101460 / / - - - - - - - - - - - - - - 0101500 - - - - - - - - - - - - - - - - * 0101560 - - - - - - - - - - - - - - \r a 0101600 n d I F S R e a d D D 376 001 \0 ) 0101620 { P a g e ( d d M g r , d i s 0101640 k , p a g e ) = v a l o f 0101660 \r / / - - - - - - - - - - - - - 0101700 - - - - - - - - - - - - - - - - * 0101760 - - - - - - - - - - - - - - - \r 0102000 / / R e a d s t h e s p e 0102020 c i f i e d D D p a g e a 0102040 n d l o c k s t h e r e s 0102060 u l t i n g b u f f e r . \r [ 0102100 \r d d M g r > > I F S D D M g r 0102120 . b u f f e r = 0 / / 0102140 U n l o c k p r e v i o u s 0102160 p a g e i f a n y \r d d M g 0102200 r > > I F S D D M g r . v P a g 0102220 e 376 001 \0 f i = \r d i s k > > 0102240 I F S D S K . v m d > > V M D . 0102260 b a s e + p a g e l s h i 0102300 f t l o g D D P a g e G r o u 0102320 p S i z e \r d d M g r > > I F S 0102340 D D M g r . b u f f e r = V 0102360 R R P ( d d M g r > > I F S D D 0102400 M g r . v P a g e ) \r r e s u l 0102420 t i s d d M g r > > I F S D D 0102440 M g r . b u f f e r \r ] \r \r / / 0102460 - - - - - - - - - - - - - - - - * 0102560 - - - - - - - - - - - - \r a n d 0102600 I F S O p e n D D ( d d M g r 0102620 , d i s k 376 001 \0 352 266 ) b e \r 0102640 / / - - - - - - - - - - - - - - 0102660 - - - - - - - - - - - - - - - - * 0102740 - - - - - - - - - - - - - - \r / 0102760 / C r e a t e s a V M D 0103000 f o r r e f e r e n c i n g 0103020 t h e D D p a g e s o n 0103040 t h i s d i s k \r [ \r l e t 0103060 v m d = A l l o c a t e ( s 0103100 y s Z o n e , l e n D D V M D 0103120 ) \r A l l o c a t e V M e m ( v 0103140 m d , d d V M I , m a x D D 0103160 V M P a g e s ) \r v m d > > D D 0103200 V M D . d i s k = d i s k \r 0103220 d i s k > > I F S D S 376 001 \0 033 357 0103240 K . v m d = v m d \r \r / / 0103260 R e c o r d t h e i n i t i 0103300 a l s t a t e o f t h i s 0103320 d i s k ' s K D i n u n 0103340 u s e d p o r t i o n o f 0103360 p a g e 1 \r I F S L o c k D D 0103400 ( d d M g r , d i s k ) \r M o 0103420 v e B l o c k ( l v ( I F S R 0103440 e a d D D P a g e ( d d M g r , 0103460 d i s k , 1 ) ) > > I F S K 0103500 D . i n i t i a l K D , \r l v 0103520 d i s k > > T F S D S K . k d 0103540 , l T F S K D H e a d e r ) \r 0103560 I F S U n l o c k D D ( d d M g 0103600 r , d i s k , t r u e ) \r ] 0103620 \r \r / / - - - - - - - - - - - - 0103640 376 001 \0 004 312 - - - - - - - - - - - 0103660 - - - - - - - - - - - - - - - - * 0103740 - - - - - \r a n d I F S C l o 0103760 s e D D ( d d M g r , d i s k 0104000 ) b e \r / / - - - - - - - - - 0104020 - - - - - - - - - - - - - - - - * 0104120 - - - \r / / D e s t r o y s 0104140 t h e D D V M D f o r t h 0104160 i s d i s k \r [ \r F r e e V M 0104200 e m ( d i s k > > I F S D S K . 0104220 v m d ) \r F r e e ( s y s Z o n 0104240 e , d i 376 001 \0 364 a s k > > I F 0104260 S D S K . v m d ) \r ] \r \f \r / / 0104300 - - - - - - - - - - - - - - - - * 0104400 - - - - - - - - - - - - \r a n d 0104420 F l u s h K D s ( ) b e \r / 0104440 / - - - - - - - - - - - - - - - 0104460 - - - - - - - - - - - - - - - - * 0104540 - - - - - - - - - - - - - \r / / 0104560 P r o c e d u r e c a l l e 0104600 d e v e r y 1 5 s e c o n 0104620 d s t o f l u s h t o d 0104640 i s k a n y T F 376 001 \0 222 240 S 0104660 K D s t h a t m a y \r / / 0104700 h a v e c h a n g e d i n 0104720 i n t e r e s t i n g w a y s 0104740 . \r / / C a l l e r m u s t 0104760 h a v e l o c k e d o p e 0105000 n L o c k t o p r e v e n t 0105020 t h e f i l e s y s t e m 0105040 s t r u c t u r e \r / / c h 0105060 a n g i n g o u t f r o m 0105100 u n d e r u s . \r / / N o t 0105120 e t h a t t h e I F S D S 0105140 K . d i r t y w o r d ( u n 0105160 u s e d b y T F S ) \r / / 0105200 i s u s e d a s a n i n 0105220 d i c a t i o n t h a t s o 0105240 m e " i n t e r e s t i n g 376 0105260 001 \0 D t " a c t i v i t y h 0105300 a s o c c u r r e d , \r / / 0105320 m o s t l i k e l y a n a 0105340 l l o c a t i o n o r d e a 0105360 l l o c a t i o n , w h i c h 0105400 c o u l d c a u s e \r / / 0105420 t h e l a s t S N a n d / o 0105440 r l a s t P a g e A l l o c 0105460 t o c h a n g e . \r [ \r / / 0105500 F o r c e f u l l T F S K D 0105520 f l u s h e v e r y 1 5 0105540 m i n \r i f s D D M g r > > I F 0105560 S D D M g r . f l u s h T i m e 0105600 r = ( i f s D D M g r > > I 0105620 F S D D M g r . f l u s h T i m 0105640 e r + 1 ) r e m 6 0 \r \r / / 0105660 E n u 376 001 \0 361 L m e r a t e 0105700 a l l f i l e s y s t e m s 0105720 . T h i s d e l i b e r a 0105740 t e l y d o e s n o t c a 0105760 t c h a n y d i s k s \r / / 0106000 t h a t a r e n o t p a 0106020 r t o f a f i l e s y s 0106040 t e m . S u c h d i s k s 0106060 m i g h t n o t b e u s 0106100 i n g \r / / t h e I F S D D 0106120 M g r a t a l l . \r l e t 0106140 f s = f s Q ! 0 \r w h i l e 0106160 f s n e 0 d o \r [ 0106200 \r f o r u n i t = 0 0106220 t o f s > > I F S . n u m U 0106240 n i t s - 1 d o \r 0106260 [ \r l 376 \0 336 : 022 e t 0106300 d i s k = f s > > I F S . 0106320 l p d t ^ u n i t \r 0106340 i f d i s k > > I F S D S K . 0106360 d i r t y % i f s D D M g r 0106400 > > I F S D D M g r . f l u s h 0106420 T i m e r e q 0 t h e n \r 0106440 [ \r 0106460 T F S W r i t e D i s k 0106500 D e s c r i p t o r ( d i s k ) 0106520 \r d i s k > > 0106540 I F S D S K . d i r t y = f 0106560 a l s e \r ] \r 0106600 ] \r f s = 0106620 f s ! 0 \r ] \r ] \r 377 \0 \0 I 0106640 f s D i s k s O E P . b c p l \0 0106660 373 224 357 003 253 \0 \0 376 001 \0 351 z / / I 0106700 F S D i s k s O E P . b c p l \r 0106720 / / C o p y r i g h t X e r 0106740 o x C o r p o r a t i o n 1 0106760 9 7 9 , 1 9 8 0 \r / / L a s 0107000 t m o d i f i e d M a r c h 0107020 6 , 1 9 8 0 3 : 4 8 P 0107040 M b y T a f t \r \r g e t " 0107060 I f s D D M g r . d e c l " \r g 0107100 e t " I f s I n i t . d e c l 0107120 " \r \r e x t e r n a l \r [ \r / / 0107140 O u t g o i n g p r o c e d 0107160 u r e s \r I n i t D i s k s O E 0107200 P ; I n i t D i s k s F i n i 0107220 s h \r \r / / I n c o m i n g 0107240 p r o c e d u r e s \r D e c l a 0107260 r e O E P ; D e c l a 376 001 \0 210 0107300 7 r e X E P ; I F S F i n i s 0107320 h ; I F S E r r o r \r T F S W 0107340 r i t e P a g e s ; T F S A s 0107360 s i g n D i s k P a g e ; T F 0107400 S C l o s e \r T F S C r e a t e 0107420 F i l e ; T F S D e l e t e P 0107440 a g e s ; T F S R e l e a s e 0107460 D i s k P a g e \r I F S O p e n 0107500 D D ; I F S C l o s e D D ; 0107520 I F S L o c k D D ; I F S U n 0107540 l o c k D D ; I F S R e a d D 0107560 D P a g e \r T F S D e s t r o y 0107600 D D M g r ; T F S C l o s e D 0107620 D ; T F S L o c k D D ; T F 0107640 S U n l o c k D D ; T F S R e 0107660 a d D D P a g e ; T F S F l u 0107700 s 376 001 \0 002 @ h D D \r S c a n D i 0107720 r B u f f e r \r \r / / I n c o 0107740 m i n g s t a t i c s \r l v U 0107760 s e r F i n i s h P r o c ; p 0110000 r i m a r y I F S ; i f s D D 0110020 M g r \r ] \r \r m a n i f e s t 0110040 e c B a d U F P = 2 3 \r \r / 0110060 / I n i t D i s k s O E P i 0110100 s c a l l e d t o d e c l 0110120 a r e I F S F i n i s h ( a 0110140 m o n g o t h e r s ) \r / / 0110160 t o t h e o v e r l a y 0110200 p a c k a g e a s b e i n g 0110220 a n O E P . \r / / I n i t 0110240 D i s k s F i n i s h i s c 0110260 a l l e d a f t e r t h e 0110300 o v e r l a 376 001 \0 b 020 y p a c 0110320 k a g e h a s b e e n \r / / 0110340 i n i t i a l i z e d , t 0110360 o s t o r e t h e O E P 0110400 p o i n t e r i n t o t h e 0110420 f i n i s h p r o c e d u r 0110440 e \r / / c e l l ( w h i c 0110460 h p r e v i o u s l y c o n 0110500 t a i n s a p o i n t e r 0110520 t o I F S F i n i s h i t s 0110540 e l f ) . \r / / T h e s w a 0110560 p p a b l e p r o c e d u r e 0110600 s i n t h e d i s k a n 0110620 d i f s D D M g r o b j e c 0110640 t s \r / / h a v e t o b 0110660 e h a n d l e d s i m i l a 0110700 r l y , s i n c e 376 001 \0 6 320 0110720 t h e s e o b j e c t s a r 0110740 e c r e a t e d \r / / b e 0110760 f o r e O E P s h a v e b 0111000 e e n s e t u p a n d h 0111020 e n c e w i l l c o n t a i 0111040 n p o i n t e r s \r / / t 0111060 o t h e c o p i e s o f 0111100 t h e p r o c e d u r e s i 0111120 n t h e r e s i d e n t i 0111140 n i t i a l i z a t i o n . \r / 0111160 / T h e a n a l o g o u s 0111200 T F S D D M g r o b j e c t 0111220 d o e s n o t h a v e t 0111240 h i s p r o b l e m b e c a 0111260 u s e \r / / n o i n s t a 0111300 n c e o f i t s u r v i v 0111320 376 001 \0 301 032 e s o v e r l a y 0111340 i n i t i a l i z a t i o n . \r 0111360 \r / / - - - - - - - - - - - - - 0111400 - - - - - - - - - - - - - - - - * 0111460 - - - - - - - - - - - - - - - \r 0111500 l e t I n i t D i s k s O E P 0111520 ( o e v ) b e \r / / - - - - - 0111540 - - - - - - - - - - - - - - - - * 0111640 - - - - - - - \r [ \r i f @ l v 0111660 U s e r F i n i s h P r o c n 0111700 e I F S F i n i s h t h e n 0111720 I F S E 376 001 \0 367 230 r r o r ( e 0111740 c B a d U F P ) \r D e c l a r e 0111760 O E P ( o e v , l v I F S F 0112000 i n i s h , \r l v T F S W r 0112020 i t e P a g e s , l v T F S 0112040 A s s i g n D i s k P a g e , 0112060 l v T F S C r e a t e F i l e 0112100 , \r l v T F S D e l e t e P 0112120 a g e s , l v T F S R e l e 0112140 a s e D i s k P a g e , l v 0112160 T F S C l o s e ) \r D e c l a r 0112200 e O E P ( o e v , l v I F S 0112220 O p e n D D , l v I F S C l 0112240 o s e D D , l v I F S L o c 0112260 k D D , \r l v I F S U n l o 0112300 c k D D , l v I F S R e a d 0112320 D D P a g e ) \r D e 376 001 \0 354 031 c 0112340 l a r e O E P ( o e v , l v 0112360 T F S D e s t r o y D D M g r , 0112400 l v T F S C l o s e D D , 0112420 l v T F S L o c k D D , \r l 0112440 v T F S U n l o c k D D , l 0112460 v T F S R e a d D D P a g e , 0112500 l v T F S F l u s h D D ) \r 0112520 D e c l a r e X E P ( o e v , 0112540 l v S c a n D i r B u f f e r 0112560 ) \r ] \r \r / / - - - - - - - - - 0112600 - - - - - - - - - - - - - - - - * 0112700 - - - \r a n d I n i t D i s k 0112720 s F i n i s h ( ) b e \r / / 376 0112740 001 \0 352 . - - - - - - - - - - - - 0112760 - - - - - - - - - - - - - - - - * 0113060 \r [ \r @ l v U s e r F i n i s h 0113100 P r o c = I F S F i n i s h 0113120 \r f o r i = 0 t o p r 0113140 i m a r y I F S > > I F S . n u 0113160 m U n i t s - 1 d o \r [ 0113200 \r l e t d i s k = p 0113220 r i m a r y I F S > > I F S . l 0113240 p d t ^ i \r d i s k > > D 0113260 S K . W r i t e D i s k P a g e 0113300 s = T F S W r i t e P a g e 0113320 s \r d i s k > > D S K . A 0113340 s s i g 376 001 \0 033 223 n D i s k P a 0113360 g e = T F S A s s i g n D i 0113400 s k P a g e \r d i s k > > 0113420 D S K . C r e a t e D i s k F i 0113440 l e = T F S C r e a t e F i 0113460 l e \r d i s k > > D S K . 0113500 D e l e t e D i s k P a g e s 0113520 = T F S D e l e t e P a g e s 0113540 \r d i s k > > D S K . R e 0113560 l e a s e D i s k P a g e = 0113600 T F S R e l e a s e D i s k P a 0113620 g e \r d i s k > > D S K . 0113640 C l o s e D i s k = T F S C 0113660 l o s e \r ] \r i f s D D M 0113700 g r > > D D M g r . O p e n D D 0113720 = I F S O p e n D D \r i f s 0113740 D D M g r > > D D 376 \0 220 U 237 M g 0113760 r . C l o s e D D = I F S C 0114000 l o s e D D \r i f s D D M g r > 0114020 > D D M g r . L o c k D D = 0114040 I F S L o c k D D \r i f s D D M 0114060 g r > > D D M g r . U n l o c k 0114100 D D = I F S U n l o c k D D 0114120 \r i f s D D M g r > > D D M g r 0114140 . R e a d D D P a g e = I F 0114160 S R e a d D D P a g e \r ] \r 377 \0 0114200 \0 I f s B T r e e R e s . b c p 0114220 l \0 373 226 < _ # \0 \0 376 001 \0 362 Y / / 0114240 I f s B T r e e R e s . b c p 0114260 l - - R e s i d e n t p o 0114300 r t i o n o f I F S i n t 0114320 e r f a c e t o t h e B - 0114340 T r e e p a c k a g e \r / / 0114360 C o p y r i g h t X e r o x 0114400 C o r p o r a t i o n 1 9 7 9 0114420 , 1 9 8 0 \r \r / / L a s t 0114440 m o d i f i e d N o v e m b e 0114460 r 1 4 , 1 9 8 0 1 1 : 5 0114500 7 A M b y T a f t \r \r g e 0114520 t " B T r e e . d e c l " \r g 0114540 e t " I f s V M e m . d e c l 0114560 " \r \r e x t e r n a l \r [ \r / / 0114600 O u t g o i n g p r o c e d 0114620 u r e s \r B V W R P ; B V 376 001 0114640 \0 233 243 R R P ; B t L o c k C e 0114660 l l ; B t U n l o c k C e l l 0114700 \r \r / / I n c o m i n g p r 0114720 o c e d u r e s \r @ V R R P ; 0114740 @ V W R P \r L o c k C e l l ; 0114760 U n l o c k C e l l ; Y i e l 0115000 d ; D e f a u l t A r g s ; 0115020 U s c ; I F S E r r o r \r ] \r 0115040 \r s t r u c t u r e F C E : \t 0115060 \t / / F r e e c h a i n e 0115100 n t r y ( d e f s h a r e d 0115120 w i t h I f s B T r e e S w 0115140 a p ) \r [ \r F r e e M a r k e r 0115160 w o r d \r n e x t w o r d \r 0115200 ] \r \r m a n i f e s t e c B t 0115220 O u t O f V M e m = 2 8 \r m 0115240 a n i 376 001 \0 z 336 f e s t e c B 0115260 t R e f F r e e P a g e = 3 0115300 0 \r \r / / P r o c e d u r e s 0115320 t o a c c e s s a s p e 0115340 c i f i e d p a g e o f t 0115360 h e B - T r e e . \r / / T h 0115400 e f i r s t 1 0 2 4 w o r 0115420 d s o f t h e f i l e a 0115440 r e r e s e r v e d f o r 0115460 t h e f i l e m a p , r e 0115500 g a r d l e s s \r / / o f t 0115520 h e p h y s i c a l p a g e 0115540 s i z e o f t h e d i s 0115560 k o r t h e l o g i c a l 0115600 B - T r e e p a g e s i z 0115620 e . \r / / T h e f i r s t 0115640 v i r t u a l 376 001 \0 \ f p a g 0115660 e i n t h e t r e e ( t 0115700 h e s t a t e p a g e ) i 0115720 s v i r t u a l p a g e z 0115740 e r o , \r / / b u t i s p 0115760 h y s i c a l l y t h e f i 0116000 r s t p a g e a f t e r t 0116020 h e f i l e m a p ( i . e 0116040 . , p a g e 2 i n \r / / 0116060 t h e n o r m a l c a s e 0116100 i n v o l v i n g T r i d e n 0116120 t d i s k s . ) \r \r / / T h 0116140 e r e a r e 3 " p a g e 0116160 s i z e s " o f i n t e r e 0116200 s t : \r / / 1 ) l o g V M P 0116220 a g e L e n g t h , t h e V 0116240 M E M p a g e s i z e 376 001 \0 0116260 & T , f i x e d a t 2 5 6 0116300 w o r d s . \r / / 2 ) T R 0116320 E E . L o g P a g e L e n g t h 0116340 , t h e " l o g i c a l " 0116360 p a g e s i z e o f t h e 0116400 B - T r e e . \r / / 3 ) F 0116420 V M D . l o g V P a g e s P e r 0116440 D i s k P a g e , t h e p a 0116460 g e s i z e o f t h e d 0116500 i s k o n w h i c h t h e 0116520 \r / / B - T r e e n o 0116540 w r e s i d e s . \r / / T h 0116560 e p a g e g r o u p s i z 0116600 e , a l i g n m e n t , e t 0116620 c . , m u s t b e b a s e 0116640 d o n \r / / t h e g r e a 0116660 t e 376 001 \0 E 264 r o f ( 2 ) 0116700 a n d ( 3 ) . T h i s i 0116720 s F V M D . l o g P a g e G r 0116740 o u p S i z e . \r \r / / - - - - 0116760 - - - - - - - - - - - - - - - - * 0117060 - - - - - - - - \r l e t B V R 0117100 R P ( t r e e , t r e e P a g 0117120 e ) = B V W R P ( t r e e , 0117140 t r e e P a g e , V R R P ) 0117160 \r / / - - - - - - - - - - - - - 0117200 - - - - - - - - - - - - - - - - * 0117260 - - - - - - - 376 001 \0 275 346 - - - - 0117300 - - - - \r \r / / - - - - - - - - 0117320 - - - - - - - - - - - - - - - - * 0117420 - - - - \r a n d B V W R P ( t 0117440 r e e , t r e e P a g e , R 0117460 e f P r o c , f r e e O K ; 0117500 n u m a r g s n a ) = v a 0117520 l o f \r / / - - - - - - - - - - 0117540 - - - - - - - - - - - - - - - - * 0117640 - - \r [ \r D e f a u l t A r g s 0117660 ( l v n a , - 2 , 376 001 \0 301 0117700 , V W R P , f a l s e ) \r Y i 0117720 e l d ( ) \r l e t v P a g e 0117740 = 1 0 2 4 r s h i f t l o 0117760 g V M P a g e L e n g t h + \r 0120000 1 l s h i f t t r e e > > 0120020 T R E E . v m d > > F V M D . l 0120040 o g V P a g e s P e r D i s k P 0120060 a g e + \r t r e e P a g e 0120100 l s h i f t ( t r e e > > T R 0120120 E E . L o g P a g e L e n g t h 0120140 - l o g V M P a g e L e n g t h 0120160 ) \r i f U s c ( v P a g e , 0120200 t r e e > > T R E E . v m d > > 0120220 V M D . l e n g t h ) g e 0 0120240 t h e n \r I F S E r r o 0120260 r ( e c B t O u t O f V M e m , 0120300 376 001 \0 315 230 t r e e ) \r l e t 0120320 p t r = R e f P r o c ( t r 0120340 e e > > T R E E . v m d > > F V 0120360 M D . b a s e + v P a g e ) 0120400 \r u n l e s s f r e e O K % 0120420 p t r > > F C E . F r e e M a 0120440 r k e r g e 0 d o \r 0120460 I F S E r r o r ( e c B t R e f 0120500 F r e e P a g e , t r e e ) \r 0120520 r e s u l t i s p t r \r ] \r \r 0120540 \r / / L o c k a n d u n l 0120560 o c k B - T r e e p a g e s 0120600 \r \r / / - - - - - - - - - - - - 0120620 - - - - - - - - - - - - - - - - * 0120700 - - - - - - 376 001 \0 A = - - - - - 0120720 - - - - - \r a n d B t L o c k 0120740 C e l l ( t r e e , c e l l ) 0120760 = L o c k C e l l ( c e l l 0121000 ) \r / / - - - - - - - - - - - - 0121020 - - - - - - - - - - - - - - - - * 0121120 \r \r / / - - - - - - - - - - - - 0121140 - - - - - - - - - - - - - - - - * 0121240 \r a n d B t U n l o c k C e l 0121260 l ( t r e e , c e l l ) = 0121300 U n l o c k C e l l ( 376 \0 U 335 020 0121320 c e l l ) \r / / - - - - - - - - 0121340 - - - - - - - - - - - - - - - - * 0121440 - - - - \r 377 \0 \0 I f s B T r e e 0121460 S w a p . b c p l \0 373 230 - Q 371 \0 0121500 \0 376 001 \0 D v / / I f s B T r e 0121520 e S w a p . b c p l - - S w 0121540 a p p a b l e p o r t i o n 0121560 o f I F S i n t e r f a c e 0121600 t o B - T r e e p a c k a 0121620 g e \r / / C o p y r i g h t 0121640 X e r o x C o r p o r a t i o 0121660 n 1 9 7 9 , 1 9 8 0 , 1 9 0121700 8 1 \r / / L a s t m o d i f 0121720 i e d N o v e m b e r 2 6 , 0121740 1 9 8 1 1 2 : 1 9 P M 0121760 b y T a f t \r \r g e t " B T 0122000 r e e . d e c l " \r g e t " I 0122020 f s V M e m . d e c l " \r g e t 0122040 " A l t o F i l e S y s . d " 0122060 \r g e t " D i s k s . d " \r \r 0122100 e x t e r n 376 001 \0 . 260 a l \r [ \r 0122120 / / O u t g o i n g p r o c 0122140 e d u r e s \r O p e n F P T r e 0122160 e ; F l u s h B T r e e S t a 0122200 t e \r B t A l l o c P a g e ; 0122220 B t F r e e P a g e ; C l o s 0122240 e I F S T r e e \r R e a d B T r 0122260 e e P a g e ; W r i t e B T r 0122300 e e P a g e ; L o c k B T r e 0122320 e P t r ; U n l o c k B T r e 0122340 e P t r \r A l l o c a t e B T r 0122360 e e P a g e ; F r e e B T r e 0122400 e P a g e ; B T r e e B u g ; 0122420 C l o s e B T r e e \r \r / / 0122440 I n c o m i n g p r o c e d u 0122460 r e s \r S y s A l l o c a t e ; 0122500 S y s A l l o c a t 376 001 \0 323 235 0122520 e Z e r o ; S y s F r e e ; 0122540 M o v e B l o c k ; D e f a u 0122560 l t A r g s \r B V W R P ; B V 0122600 R R P ; B t L o c k C e l l ; 0122620 B t U n l o c k C e l l \r O p 0122640 e n V F i l e F r o m F P ; C 0122660 l o s e V F i l e ; P u r g e 0122700 V M e m ; C a l l P r o c \r I 0122720 F S E r r o r ; U s c ; E n 0122740 q u e u e ; U n q u e u e ; 0122760 M a x ; S y s E r r \r C a l l 0123000 0 ; C a l l 1 ; C a l l 2 ; 0123020 C a l l 3 ; C a l l 4 ; C 0123040 a l l 5 ; C a l l 6 ; C a l 0123060 l 7 \r \r / / O u t g o i n g 0123100 s t a t i c s \r l e n F M a p \r 0123120 376 001 \0 371 # \r / / I n c o m i n 0123140 g s t a t i c s \r s y s Z o n 0123160 e \r ] \r \r s t a t i c \r [ \r b t 0123200 Q \r R e a d B T r e e P a g e ; 0123220 W r i t e B T r e e P a g e ; 0123240 L o c k B T r e e P t r ; U 0123260 n l o c k B T r e e P t r \r A l 0123300 l o c a t e B T r e e P a g e ; 0123320 F r e e B T r e e P a g e ; 0123340 B T r e e B u g ; C l o s e B 0123360 T r e e \r l e n F M a p = 1 0123400 0 0 \r ] \r \r / / - - - - - - - - 0123420 - - - - - - - - - - - - - - - - * 0123520 - - - - \r 376 001 \0 025 227 s t r u c t 0123540 u r e I F S T R E E : \t / / 0123560 B T r e e a s Q u e u e E 0123600 l e m e n t \r / / - - - - - - - 0123620 - - - - - - - - - - - - - - - - * 0123720 - - - - - \r [ \r l i n k w o r 0123740 d \r t r e e @ T R E E \r ] \r \r 0123760 / / - - - - - - - - - - - - - - 0124000 - - - - - - - - - - - - - - - - * 0124060 - - - - - - - - - - - - - - \r s 0124100 t r u c t u r e F C E : \t \t / 0124120 / F r e e c h a 376 001 \0 270 A i 0124140 n e n t r y f o r d i s k 0124160 p a g e s o f a B - T r 0124200 e e f i l e \r / / - - - - - - 0124220 - - - - - - - - - - - - - - - - * 0124320 - - - - - - \r [ \r F r e e M a r 0124340 k e r w o r d \t \t / / n e g 0124360 a t i v e i f p a g e i s 0124400 f r e e ; s h a r e s s t 0124420 o r a g e \r \t \t \t / / w i t 0124440 h B T P > > F r e e W o r d s 0124460 \r n e x t w o r d \t \t / / n 0124500 e x t p a g e o n f r e e 0124520 l i s t - 0 m e a n s 376 0124540 001 \0 206 365 n o n e \r ] \r \r m a n 0124560 i f e s t \r [ \r p a g e Q u a n 0124600 t u m = 2 0 \t / / m u s t 0124620 b e a m u l t i p l e o 0124640 f 4 \r ] \r \f \r / / - - - - - - 0124660 - - - - - - - - - - - - - - - - * 0124760 - - - - - - \r l e t O p e n F 0125000 P T r e e ( f p , d i s k , 0125020 C o m p a r e K e y R t n , L 0125040 e n g t h R t n , i n i t i a 0125060 l i z e T r e e , \r d i s k P 0125100 a g e s , l o g B T r e e P a 0125120 g e L e n g t h ; n u m a r g 0125140 s n a 376 001 \0 214 w ) = v a l 0125160 o f \r / / - - - - - - - - - - - 0125200 - - - - - - - - - - - - - - - - * 0125300 - \r [ \r D e f a u l t A r g s ( 0125320 l v n a , - 4 , f a l s e 0125340 , 2 0 4 8 , d i s k > > D S 0125360 K . l n P a g e S i z e ) \r l e 0125400 t q T r e e = S y s A l l 0125420 o c a t e ( s i z e I F S T R 0125440 E E / 1 6 ) \r l e t t r e e 0125460 = l v ( q T r e e > > I F S 0125500 T R E E . t r e e ) \r t r e e > 0125520 > T R E E . C o m p a r e K e y 0125540 R t n = C o m 376 001 \0 r 360 p a 0125560 r e K e y R t n \r t r e e > > T 0125600 R E E . L e n g t h R t n = 0125620 L e n g t h R t n \r t r e e > > 0125640 T R E E . B V R R P = B V R 0125660 R P \r t r e e > > T R E E . B V 0125700 W R P = B V W R P \r t r e e 0125720 > > T R E E . B V A P = B t 0125740 A l l o c P a g e \r t r e e > > 0125760 T R E E . B V F P = B t F r 0126000 e e P a g e \r t r e e > > T R E 0126020 E . B L o c k C e l l = B t 0126040 L o c k C e l l \r t r e e > > T 0126060 R E E . B U n l o c k C e l l 0126100 = B t U n l o c k C e l l \r t 0126120 r e e > > T R E E . B T C l o s 0126140 e = C l o s e I F S T r 376 001 0126160 \0 035 e e \r t r e e > > T R E E 0126200 . B T B u g = S y s E r r \r 0126220 R e a d B T r e e P a g e = 0126240 C a l l 0 \r W r i t e B T r e e 0126260 P a g e = C a l l 1 \r L o c 0126300 k B T r e e P t r = C a l l 0126320 2 \r U n l o c k B T r e e P t r 0126340 = C a l l 3 \r A l l o c a t 0126360 e B T r e e P a g e = C a l 0126400 l 4 \r F r e e B T r e e P a g e 0126420 = C a l l 5 \r B T r e e B u 0126440 g = C a l l 6 \r C l o s e B 0126460 T r e e = C a l l 7 \r t r e 0126500 e > > T R E E . Z o n e = s 0126520 y s Z o n e \r t r e e > > T R E 0126540 E . v m d = O p e n V F i l 0126560 e F r 376 001 \0 F \n o m F P ( f p , 0126600 d i s k , d i s k P a g e s 0126620 , l e n F M a p , t r u e ) 0126640 \r \r t e s t i n i t i a l i z 0126660 e T r e e \r i f s o \r 0126700 [ \r S e t B 0126720 T r e e P a g e L e n g t h ( t 0126740 r e e , l o g B T r e e P a g 0126760 e L e n g t h ) \r t 0127000 r e e > > T R E E . R o o t P a 0127020 g e = 1 \r t r e 0127040 e > > T R E E . G r e a t e s t 0127060 P a g e = 1 \r t 0127100 r e e > > T R E E . F i r s t F 0127120 r e e P a g e = E m p t y \r 0127140 t r e e > > T R E E 0127160 . R e c o r d C 376 001 \0 w 8 o u n 0127200 t = 0 \r l e t 0127220 s t a t e P a g e P = W r i 0127240 t e B T r e e P a g e ( t r e e 0127260 , 0 , 0 , t r u e ) \r 0127300 M o v e B l o c k ( l v 0127320 s t a t e P a g e P > > T S , 0127340 l v t r e e > > T R E E . T 0127360 S , l T S ) \r l e 0127400 t r o o t P a g e P = W r 0127420 i t e B T r e e P a g e ( t r e 0127440 e , 1 , 0 , t r u e ) \r 0127460 r o o t P a g e P > > 0127500 B T P . M i n P t r = E m p 0127520 t y \r r o o t P a g 0127540 e P > > B T P . F r e e W o r d 0127560 s = t r e e > > T R E 376 001 \0 0127600 , 7 E . P a g e L e n g t h - P 0127620 a g e O v e r h e a d \r 0127640 ] \r i f n o t / 0127660 / c o p y t r e e s t a t 0127700 e f r o m s t a t e p a g 0127720 e \r [ \r 0127740 S e t B T r e e P a g e L e n g 0127760 t h ( t r e e , d i s k > > D 0130000 S K . l n P a g e S i z e ) / 0130020 / u n t i l o p e n \r 0130040 l e t s t a t e P a g e 0130060 P = R e a d B T r e e P a g 0130100 e ( t r e e , 0 ) \r 0130120 M o v e B l o c k ( l v t r 0130140 e e > > T R E E . T S , l v 0130160 s t a t e P a g e P > > T S , 0130200 l T 376 001 \0 344 374 S ) \r 0130220 / / M u s t i n v a l i d a 0130240 t e t h e h a s h m a p 0130260 b e f o r e c h a n g i n g 0130300 p a g e g r o u p s i z e \r 0130320 P u r g e V M e m ( 0130340 t r e e > > T R E E . v m d ) \r 0130360 i f t r e e > > T 0130400 R E E . L o g P a g e L e n g t 0130420 h n e 0 t h e n \r 0130440 S e t B T r e e P a g 0130460 e L e n g t h ( t r e e , t r 0130500 e e > > T R E E . L o g P a g e 0130520 L e n g t h ) \r ] \r 0130540 \r t r e e > > T R E E . S t a t 0130560 e D i r t y = f a l s e \r i 0130600 f b t Q e 376 001 \0 j 244 q 0 0130620 t h e n b t Q = S y s A l 0130640 l o c a t e Z e r o ( 2 ) \r E n 0130660 q u e u e ( b t Q , q T r e e 0130700 ) \r r e s u l t i s t r e e \r 0130720 ] \r \f \r / / - - - - - - - - - - 0130740 - - - - - - - - - - - - - - - - * 0131040 - - \r a n d S e t B T r e e P 0131060 a g e L e n g t h ( t r e e , 0131100 l o g B T r e e P a g e L e n g 0131120 t h ) b e \r / / - - - - - - - 0131140 - - - - - - - - - - - - - - - - * 0131200 - - - - - - - - - - - - 376 001 \0 \t 0131220 < - - - - - - - - - - - - - - - 0131240 - - - - - - - - - - \r / / S e 0131260 t s t h e " l o g i c a l " 0131300 p a g e l e n g t h i n 0131320 t h e t r e e a n d i n 0131340 i t s v m d , a n d \r / / 0131360 s e t s t h e p a g e g 0131400 r o u p s i z e t o b e 0131420 t h e g r e a t e r o f t 0131440 h e n u m b e r \r / / o f 0131460 v m e m p a g e s p e r 0131500 d i s k p a g e a n d t h 0131520 e n u m b e r o f v m e m 0131540 p a g e s \r / / p e r l 0131560 o g i c a l B - T r e e p a 0131600 g e . \r [ \r t r e e > > T R E E 0131620 . 376 001 \0 ^ l L o g P a g e L e n 0131640 g t h = l o g B T r e e P a 0131660 g e L e n g t h \r t r e e > > T 0131700 R E E . P a g e L e n g t h = 0131720 1 l s h i f t l o g B T r 0131740 e e P a g e L e n g t h \r t r e 0131760 e > > T R E E . v m d > > F V M 0132000 D . l o g P a g e G r o u p S i 0132020 z e = M a x ( \r l o g B T 0132040 r e e P a g e L e n g t h - 0132060 l o g V M P a g e L e n g t h , 0132100 \r t r e e > > T R E E . v m d 0132120 > > F V M D . l o g V P a g e s 0132140 P e r D i s k P a g e ) \r ] \r \r 0132160 / / - - - - - - - - - - - - - - 0132200 - - - - - - - - - - - - - - - - 0132220 - - - - - - 376 001 \0 ; 226 - - - - - 0132240 - - - - - - - - - - - - - - - - * 0132300 - - - \r a n d C l o s e I F S 0132320 T r e e ( t r e e ) = v a l 0132340 o f \r / / - - - - - - - - - - - 0132360 - - - - - - - - - - - - - - - - * 0132460 - \r [ \r U n q u e u e ( b t Q , 0132500 t r e e - ( o f f s e t I F 0132520 S T R E E . t r e e / 1 6 ) ) \r 0132540 W r i t e S t a t e P a g e ( t 0132560 r e e ) \r C l o s e V F i l e ( 0132600 t r e e > > T R E E . v m d ) \r 0132620 r e s u l t i s S y 376 001 \0 \n 315 0132640 s F r e e ( t r e e - ( o f f s 0132660 e t I F S T R E E . t r e e / 0132700 1 6 ) ) \r ] \r \r / / - - - - - - 0132720 - - - - - - - - - - - - - - - - * 0133020 - - - - - - \r a n d F l u s h 0133040 B T r e e S t a t e ( ) b e \r 0133060 / / - - - - - - - - - - - - - - 0133100 - - - - - - - - - - - - - - - - * 0133160 - - - - - - - - - - - - - - \r [ 0133200 \r l e t q T r e e = b t Q 0133220 ! 0 \r w h i l e q T r e e n 0133240 376 001 \0 e 367 e 0 d o \r [ 0133260 \r W r i t e S t a t e P a 0133300 g e ( l v q T r e e > > I F S 0133320 T R E E . t r e e ) \r q T 0133340 r e e = q T r e e > > I F S 0133360 T R E E . l i n k \r ] \r ] 0133400 \r \r / / - - - - - - - - - - - - 0133420 - - - - - - - - - - - - - - - - * 0133520 \r a n d W r i t e S t a t e P 0133540 a g e ( t r e e ) b e \r / / - 0133560 - - - - - - - - - - - - - - - - * 0133640 - - - - - 376 001 \0 ) D - - - - - - 0133660 - - - - - - - - - - - - - - - - 0133700 \r [ \r i f t r e e > > T R E E 0133720 . S t a t e D i r t y t h e n 0133740 \r [ \r l e t s t a 0133760 t e P a g e P = W r i t e B 0134000 T r e e P a g e ( t r e e , 0 0134020 ) \r M o v e B l o c k ( l 0134040 v s t a t e P a g e P > > T S 0134060 , l v t r e e > > T R E E . 0134100 T S , l T S ) \r t r e e 0134120 > > T R E E . S t a t e D i r t 0134140 y = f a l s e \r ] \r ] 0134160 \r \f \r / / - - - - - - - - - - - 0134200 - - - - - - - - - - - - - - - - * 0134240 - - - - - - - - - - 376 001 \0 230 230 - 0134260 - - - - - - - - - - - - - - - - 0134300 - - - - - - \r a n d B t A l l 0134320 o c P a g e ( t r e e ) = v 0134340 a l o f \r / / - - - - - - - - - 0134360 - - - - - - - - - - - - - - - - * 0134460 - - - \r [ \r i f t r e e > > T 0134500 R E E . F i r s t F r e e P a g 0134520 e e q E m p t y t h e n \r 0134540 [ \r l e t g p = 0134560 t r e e > > T R E E . G r e a 0134600 t e s t P a g e \r l e t 0134620 n g p = g p + p a g e Q u a 0134640 n t u m \r t r e e > > T 376 0134660 001 \0 N ! R E E . G r e a t e s t 0134700 P a g e = n g p \r f o 0134720 r n e w F r e e P a g e = 0134740 g p + 1 t o n g p d o C 0134760 a l l P r o c ( F r e e B T r e 0135000 e P a g e , t r e e , n e w 0135020 F r e e P a g e ) \r ] \r l 0135040 e t n e w P a g e = t r e 0135060 e > > T R E E . F i r s t F r e 0135100 e P a g e \r l e t p a g e = 0135120 W r i t e B T r e e P a g e ( 0135140 t r e e , n e w P a g e , 0 0135160 , t r u e ) \r t r e e > > T R 0135200 E E . F i r s t F r e e P a g e 0135220 = p a g e > > F C E . n e x 0135240 t \r p a g e > > F C E . F r e e 0135260 M a r k 376 001 \0 312 A e r = 0 \r 0135300 t r e e > > T R E E . S t a t e 0135320 D i r t y = t r u e \r r e s 0135340 u l t i s n e w P a g e \r ] \r 0135360 \r / / - - - - - - - - - - - - - 0135400 - - - - - - - - - - - - - - - - * 0135460 - - - - - - - - - - - - - - - \r 0135500 a n d B t F r e e P a g e ( t 0135520 r e e , f r e e P a g e ) b 0135540 e \r / / - - - - - - - - - - - - 0135560 - - - - - - - - - - - - - - - - * 0135660 \r [ \r l e t p a 376 \0 264 } N g e 0135700 = W r i t e B T r e e P a g 0135720 e ( t r e e , f r e e P a g e 0135740 , 0 , t r u e ) \r p a g e > 0135760 > F C E . n e x t = t r e e 0136000 > > T R E E . F i r s t F r e e 0136020 P a g e \r p a g e > > F C E . F 0136040 r e e M a r k e r = - 1 \r t 0136060 r e e > > T R E E . F i r s t F 0136100 r e e P a g e = f r e e P a 0136120 g e \r t r e e > > T R E E . S t 0136140 a t e D i r t y = t r u e \r 0136160 ] \r 377 \0 \0 I f s B T r e e O E P 0136200 . b c p l \0 373 230 - R \f \0 \0 376 001 \0 0136220 321 H / / I F S B T r e e O E P 0136240 . b c p l \r / / C o p y r i g 0136260 h t X e r o x C o r p o r a 0136300 t i o n 1 9 7 9 , 1 9 8 1 \r 0136320 \r / / L a s t m o d i f i e 0136340 d N o v e m b e r 2 6 , 1 0136360 9 8 1 1 2 : 2 2 P M b y 0136400 T a f t \r \r e x t e r n a l \r 0136420 [ \r / / O u t g o i n g p r 0136440 o c e d u r e s \r I n i t B T r 0136460 e e O E P \r \r / / I n c o m i 0136500 n g p r o c e d u r e s \r D e 0136520 c l a r e O E P ; B t A l l o 0136540 c P a g e ; B t F r e e P a g 0136560 e ; C l o s e I F S T r e e \r 0136600 ] \r \r \r / / - - - - - - - - - - 0136620 - - 376 \0 354 227 204 - - - - - - - - - 0136640 - - - - - - - - - - - - - - - - * 0136720 - - - - - - - \r l e t I n i t 0136740 B T r e e O E P ( o e v ) b e 0136760 \r / / - - - - - - - - - - - - - 0137000 - - - - - - - - - - - - - - - - * 0137060 - - - - - - - - - - - - - - - \r 0137100 D e c l a r e O E P ( o e 0137120 v , l v B t A l l o c P a g 0137140 e , l v B t F r e e P a g e 0137160 , l v C l o s e I F S T r e 0137200 e ) \r 377 \0 \0 I f s F i l e s . d 0137220 e c l \0 373 231 \a 376 4 \0 \0 376 001 \0 355 223 0137240 / / I F S F i l e s . d e c l 0137260 - - d e c l a r a t i o n s 0137300 f o r I F S f i l e s t 0137320 r u c t u r e s \r / / \t \t T h i 0137340 s i s a n e x t e n s i o 0137360 n t o A l t o F i l e S y s 0137400 . d \r / / C o p y r i g h t 0137420 X e r o x C o r p o r a t i o 0137440 n 1 9 7 9 , 1 9 8 1 , 1 9 0137460 8 2 \r \r / / L a s t m o d i 0137500 f i e d M a y 1 1 , 1 9 8 0137520 2 1 0 : 0 9 A M b y T 0137540 a f t \r \r g e t " A l t o F i 0137560 l e S y s . d " \r \r / / T h e 0137600 f i r s t f e w s t r u c 0137620 t u r e s p a r a l l e l t 0137640 376 001 \0 254 024 h e o n e s i n 0137660 t h e s t a n d a r d \r / / 0137700 A l t o f i l e s y s t e m 0137720 , b u t a s s i g n m e a 0137740 n i n g t o s o m e p r e 0137760 v i o u s l y u n u s e d \r / 0140000 / b i t s a n d f i e l d 0140020 s w h i c h a r e m a r k 0140040 e d w i t h " * " . \r \r / / 0140060 - - - - - - - - - - - - - - - - * 0140160 - - - - - - - - - - - - \r s t r 0140200 u c t u r e I S N : \t \t / / 0140220 I F S s e r i a l n u m b e 0140240 r \r / / - 376 001 \0 324 W - - - - - - 0140260 - - - - - - - - - - - - - - - - * 0140360 - - - - - \r [ \r w o r d 1 w o 0140400 r d = \r [ \r d i r 0140420 e c t o r y b i t \t / / f i 0140440 l e i s a d i r e c t o r 0140460 y ( S y s D i r o r I F S 0140500 . d i r ) \r r a n d o m 0140520 b i t \t \t / / n o t u s e d 0140540 i n I F S \r n o l o g 0140560 b i t \t \t / / n o t u s e 0140600 d i n I F S \r a r c h 0140620 i v e d b i t \t \t / / * f i l 0140640 e i s a r c h i 376 001 \0 307 271 v 0140660 e d \r p a r t 1 b i t 0140700 1 2 \r ] \r w o r d 2 w o 0140720 r d = p a r t 2 w o r d \r 0140740 ] \r \r / / - - - - - - - - - - - 0140760 - - - - - - - - - - - - - - - - * 0141060 - \r s t r u c t u r e I D A : 0141100 \t \t / / I F S v i r t u a l 0141120 d i s k a d d r e s s \r / / 0141140 - - - - - - - - - - - - - - - - * 0141240 - - - - - - - - - - - - \r [ \r 376 0141260 001 \0 233 2 b l a n k b y t e \r u 0141300 n i t b y t e \t \t / / * l o g 0141320 i c a l u n i t n u m b e r 0141340 \r p a g e w o r d \t \t / / v 0141360 i r t u a l p a g e n u m b 0141400 e r o n u n i t \r ] \r \r / / 0141420 - - - - - - - - - - - - - - - - * 0141520