$ od -c -N 50000 [Pixel]<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