[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

ext2fs Corruption Comments



I was browsing the recent "Kernel Traffic" site, when I saw this 
interesting note (http://kt.linuxcare.com/kt19991213_46.html#4)
about fs corruption under 2.2 Kernel series.

Apparently, the problem was due to a race condition:

"Jason and Samuel told me they could reliable reproduce fs corruption 
by writing to a filesystem while the ioctl(BLKFLSBUF) is running in 
parallel on the blockdevice where the fs is mounted. 

I understood what was going on: BLKFLSBUF is just an interface for 
invalidate_buffers and invalidate_buffers() trashes away _all_ the 
buffers beloging to such a blockdevice. _Dirty_ buffers included."

Could some of the changes in the new linux device drivers have
introduced this same race condition?  I realize that we don't use
ioctl's in the servers, but perhaps they get called in some way
through the C library when running standard Linux utilities, which
results in the rpc analog of this ioctl being invoked.  For example,
the "pokel_sync" routine of the ext2fs server seems like a possible
candidate.

I'm attaching the final "successful" patch for your review, in the
hope that it will be helpful.

Thanks,

-Brent


begin 600 fscorruptfix
M9&EF9B`M=7).(#(N,BXQ-'!R93DO9')I=F5R<R]B;&]C:R]R9"YC(#(N,BXQ
M-'!R93DM8G5F+7)A8V5S+V1R:79E<G,O8FQO8VLO<F0N8PHM+2T@,BXR+C$T
M<')E.2]D<FEV97)S+V)L;V-K+W)D+F,)4W5N($]C="`S,2`R,SHS,3HR-2`Q
M.3DY"BLK*R`R+C(N,31P<F4Y+6)U9BUR86-E<R]D<FEV97)S+V)L;V-K+W)D
M+F,)5V5D($1E8R`@,2`P,#HU-3HP-2`Q.3DY"D!`("TQ.3$L-R`K,3DQ+#$P
M($!`"B`)<W=I=&-H("AC;60I('L*(`D)8V%S92!"3$M&3%-"548Z"B`)"0EI
M9B`H(6-A<&%B;&4H0T%07U-94U]!1$U)3BDI(')E='5R;B`M14%#0T53.PHM
M"0D):6YV86QI9&%T95]B=69F97)S*&EN;V1E+3YI7W)D978I.PHK"0D)+RH@
M<W!E8VEA;#H@=V4@=V%N="!T;R!R96QE87-E('1H92!R86UD:7-K(&UE;6]R
M>2P**PD)"2`@(&ET)W,@;F]T(&QI:V4@=VET:"!T:&4@;W1H97(@8FQO8VMD
M979I8V5S('=H97)E"BL)"0D@("!T:&ES(&EO8W1L(&]N;'D@9FQU<VAE<R!A
M=V%Y('1H92!B=69F97(@8V%C:&4N("HO"BL)"0ED97-T<F]Y7V)U9F9E<G,H
M:6YO9&4M/FE?<F1E=BD["B`)"0EB<F5A:SL*(`H@("`@("`@("`@"6-A<V4@
M0DQ+1T544TE:13H@("`O*B!2971U<FX@9&5V:6-E('-I>F4@*B\*0$`@+3,T
M-RPW("LS-3`L-R!`0`H@"6EN="!I.PH@"B`)9F]R("AI(#T@,"`[(&D@/"!.
M54U?4D%-1$E32U,[(&DK*RD*+0D):6YV86QI9&%T95]B=69F97)S*$U+1$56
M*$U!2D]27TY2+"!I*2D["BL)"61E<W1R;WE?8G5F9F5R<RA-2T1%5BA-04I/
M4E].4BP@:2DI.PH@"B`)=6YR96=I<W1E<E]B;&MD978H($U!2D]27TY2+"`B
M<F%M9&ES:R(@*3L*(`EB;&M?9&5V6TU!2D]27TY272YR97%U97-T7V9N(#T@
M,#L*9&EF9B`M=7).(#(N,BXQ-'!R93DO9G,O8G5F9F5R+F,@,BXR+C$T<')E
M.2UB=68M<F%C97,O9G,O8G5F9F5R+F,*+2TM(#(N,BXQ-'!R93DO9G,O8G5F
M9F5R+F,)5V5D($1E8R`@,2`P,#HU-#HT-"`Q.3DY"BLK*R`R+C(N,31P<F4Y
M+6)U9BUR86-E<R]F<R]B=69F97(N8PE7960@1&5C("`Q(#`P.C4Y.C`U(#$Y
M.3D*0$`@+3(T+#8@*S(T+#D@0$`*("`J("T@4DU+"B`@*B\*(`HK+RH@:6YV
M86QI9&%T95]B=69F97)S+W-E=%]B;&]C:W-I>F4O<WEN8U]D978@<F%C92!C
M;VYD:71I;VYS(&%N9`HK("`@9G,@8V]R<G5P=&EO;B!F:7AE<RP@,3DY.2P@
M06YD<F5A($%R8V%N9V5L:2`\86YD<F5A0'-U<V4N9&4^("HO"BL*("-I;F-L
M=61E(#QL:6YU>"]M86QL;V,N:#X*("-I;F-L=61E(#QL:6YU>"]L;V-K<RYH
M/@H@(VEN8VQU9&4@/&QI;G5X+V5R<FYO+F@^"D!`("TR-C,L,3$@*S(V-BPQ
M-"!`0`H@"B!V;VED('-Y;F-?9&5V*&MD979?="!D978I"B!["BT)<WEN8U]B
M=69F97)S*&1E=BP@,"D["B`)<WEN8U]S=7!E<G,H9&5V*3L*(`ES>6YC7VEN
M;V1E<RAD978I.PHM"7-Y;F-?8G5F9F5R<RAD978L(#`I.PH@"41154]47U-9
M3D,H9&5V*3L**PDO*B!S>6YC(&%L;"!T:&4@9&ER='D@8G5F9F5R<R!O=70@
M=&\@9&ES:R!O;FQY(%]A9G1E<E\@86QL('1H90HK"2`@(&AI9V@@;&5V96P@
M;&%Y97)S(&9I;FES:&5D(&=E;F5R871E9"!B=69F97(@9&ER='D@9&%T80HK
M"2`@("AO<B!W92=L;"!R971U<FX@=VET:"!S;VUE(&)U9F9E<B!S=&EL;"!D
M:7)T>2!O;B!T:&4@8FQO8VMD979I8V4**PD@("!S;R!B<F5A:VEN9R!T:&4@
M<V5M86YT:6-S(&]F('1H:7,@8V%L;"D@*B\**PES>6YC7V)U9F9E<G,H9&5V
M+"`P*3L*(`DO*@H@"2`J($9)6$U%*&5R:6,I('=E(&YE960@=&\@<WEN8R!T
M:&4@<&AY<VEC86P@9&5V:6-E<R!H97)E+@H@"2`J(%1H:7,@:7,@8F5C875S
M92!S;VUE("AS8W-I*2!C;VYT<F]L;&5R<R!H879E(&AU9V4@86UO=6YT<R!O
M9@I`0"`M,SDV+#,Q("LT,#(L-B!`0`H@"7)E='5R;B!E<G(["B!]"B`*+79O
M:60@:6YV86QI9&%T95]B=69F97)S*&MD979?="!D978I"BU["BT):6YT(&D[
M"BT):6YT(&YL:7-T.PHM"7-T<G5C="!B=69F97)?:&5A9"`J(&)H.PHM"BT)
M9F]R*&YL:7-T(#T@,#L@;FQI<W0@/"!.4E],25-4.R!N;&ES="LK*2!["BT)
M"6)H(#T@;')U7VQI<W1;;FQI<W1=.PHM"0EF;W(@*&D@/2!N<E]B=69F97)S
M7W1Y<&5;;FQI<W1=*C(@.R`M+6D@/B`P(#L@8F@@/2!B:"T^8E]N97AT7V9R
M964I('L*+0D)"6EF("AB:"T^8E]D978@(3T@9&5V*0HM"0D)"6-O;G1I;G5E
M.PHM"0D)=V%I=%]O;E]B=69F97(H8F@I.PHM"0D):68@*&)H+3YB7V1E=B`A
M/2!D978I"BT)"0D)8V]N=&EN=64["BT)"0EI9B`H8F@M/F)?8V]U;G0I"BT)
M"0D)8V]N=&EN=64["BT)"0EB:"T^8E]F;'5S:'1I;64@/2`P.PHM"0D)8VQE
M87)?8FET*$)(7U!R;W1E8W1E9"P@)F)H+3YB7W-T871E*3L*+0D)"6-L96%R
M7V)I="A"2%]5<'1O9&%T92P@)F)H+3YB7W-T871E*3L*+0D)"6-L96%R7V)I
M="A"2%]$:7)T>2P@)F)H+3YB7W-T871E*3L*+0D)"6-L96%R7V)I="A"2%]2
M97$L("9B:"T^8E]S=&%T92D["BT)"7T*+0E]"BU]"BT*("\J($%F=&5R('-E
M=F5R86P@:&]U<G,@;V8@=&5D:6]U<R!A;F%L>7-I<RP@=&AE(&9O;&QO=VEN
M9R!H87-H"B`@*B!F=6YC=&EO;B!W;VXN("!$;R!N;W0@;65S<R!W:71H(&ET
M+BXN("U$879E30H@("HO"D!`("TT.3(L,3$@*S0W,RPQ-"!`0`H@"7)E;6]V
M95]F<F]M7VQR=5]L:7-T*&)H*3L*('T*(`HM<W1A=&EC(&EN;&EN92!V;VED
M('!U=%]L87-T7V9R964H<W1R=6-T(&)U9F9E<E]H96%D("H@8F@I"BMS=&%T
M:6,@=F]I9"!P=71?;&%S=%]F<F5E*'-T<G5C="!B=69F97)?:&5A9"`J(&)H
M*0H@>PH@"6EF("AB:"D@>PH@"0ES=')U8W0@8G5F9F5R7VAE860@*BIB:'`@
M/2`F9G)E95]L:7-T6T)51E-)6D5?24Y$15@H8F@M/F)?<VEZ92E=.PH@"BL)
M"6)H+3YB7V-O=6YT(#T@,#L**PD)8F@M/F)?<W1A=&4@/2`P.PHK"0ER96UO
M=F5?9G)O;5]Q=65U97,H8F@I.PH@"0EB:"T^8E]D978@/2!"7T92144[("`O
M*B!3;R!I="!I<R!O8G9I;W5S('=E(&%R92!O;B!T:&4@9G)E92!L:7-T+B`J
M+PH@"B`)"2\J($%D9"!T;R!B86-K(&]F(&9R964@;&ES="X@*B\*0$`@+34Q
M-BPW("LU,#`L-R!`0`H@>PH@"2\J('!U="!A="!E;F0@;V8@9G)E92!L:7-T
M("HO"B`):68H8F@M/F)?9&5V(#T]($)?1E)%12D@>PHM"0EP=71?;&%S=%]F
M<F5E*&)H*3L**PD)<&%N:6,H(D)?1E)%12!I;G-E<G1E9"!I;G1O('%U975E
M<R(I.PH@"7T@96QS92!["B`)"7-T<G5C="!B=69F97)?:&5A9"`J*F)H<"`]
M("9L<G5?;&ES=%MB:"T^8E]L:7-T73L*(`I`0"`M-C`V+#$P("LU.3`L-C$@
M0$`*(`ER971U<FX@,#L*('T*(`HK+RH@268@:6YV86QI9&%T95]B=69F97)S
M*"D@=VEL;"!T<F%S:"!D:7)T>2!B=69F97)S+"!I="!M96%N<R!S;VUE(&MI
M;F0**R`@(&]F(&9S(&-O<G)U<'1I;VX@:7,@9V]I;F<@;VXN(%1R87-H:6YG
M(&1I<G1Y(&1A=&$@86QW87ES(&EM<&QY(&QO<VEN9PHK("`@:6YF;W)M871I
M;VX@=&AA="!W87,@<W5P<&]S960@=&\@8F4@:G5S="!S=&]R960@;VX@=&AE
M('!H>7-I8V%L(&QA>65R"BL@("!B>2!T:&4@=7-E<BX**PHK("`@5&AU<R!I
M;G9A;&ED871E7V)U9F9E<G,@:6X@9V5N97)A;"!U<V%G92!I<R!N;W0@86QL
M=V]W960@=&\@=')A<V@@9&ER='D**R`@(&)U9F9E<G,N($9O<B!E>&%M<&QE
M(&EO8W1L*$9,4T),2T)51BD@97AP96-T<R!D:7)T>2!D871A('1O(&)E('!R
M97-E<G9E9"X**PHK("`@3D]413H@26X@=&AE(&-A<V4@=VAE<F4@=&AE('5S
M97(@<F5M;W9E9"!A(')E;6]V86)L92UM961I82UD:7-K(&5V96X@:68**R`@
M('1H97)E)W,@<W1I;&P@9&ER='D@9&%T82!N;W0@<WEN8V5D(&]N(&1I<VL@
M*&1U92!A(&)U9R!I;B!T:&4@9&5V:6-E(&1R:79E<@HK("`@;W(@9'5E(&%N
M(&5R<F]R(&]F('1H92!U<V5R*2P@8GD@;F]T(&1E<W1R;WEI;F<@=&AE(&1I
M<G1Y(&)U9F9E<G,@=V4@8V]U;&0**R`@(&=E;F5R871E(&-O<G)U<'1I;VX@
M86QS;R!O;B!T:&4@;F5X="!M961I82!I;G-E<G1E9"P@=&AU<R!A('!A<F%M
M971E<B!I<PHK("`@;F5C97-S87)Y('1O(&AA;F1L92!T:&ES(&-A<V4@:6X@
M=&AE(&UO<W0@<V%F92!W87D@<&]S<VEB;&4@*'1R>6EN9PHK("`@=&\@;F]T
M(&-O<G)U<'0@86QS;R!T:&4@;F5W(&1I<VL@:6YS97)T960@=VET:"!T:&4@
M9&%T82!B96QO;F=I;F<@=&\**R`@('1H92!O;&0@;F]W(&-O<G)U<'1E9"!D
M:7-K*2X@06QS;R!F;W(@=&AE(')A;61I<VL@=&AE(&YA='5R86P@=&AI;F<*
M*R`@('1O(&1O(&EN(&]R9&5R('1O(')E;&5A<V4@=&AE(')A;61I<VL@;65M
M;W)Y(&ES('1O(&1E<W1R;WD@9&ER='D@8G5F9F5R<RX**PHK("`@5&AE<V4@
M87)E('1W;R!S<&5C:6%L(&-A<V5S+B!.;W)M86P@=7-A9V4@:6UP;'D@=&AE
M(&1E=FEC92!D<FEV97(**R`@('1O(&ES<W5E(&$@<WEN8R!O;B!T:&4@9&5V
M:6-E("AW:71H;W5T('=A:71I;F<@22]/(&-O;7!L971A=&EO;BD@86YD"BL@
M("!T:&5N(&%N(&EN=F%L:61A=&5?8G5F9F5R<R!C86QL('1H870@9&]E<VXG
M="!T<F%S:&5S(&1I<G1Y(&)U9F9E<G,N("HO"BMV;VED(%]?:6YV86QI9&%T
M95]B=69F97)S*&MD979?="!D978L(&EN="!D97-T<F]Y7V1I<G1Y7V)U9F9E
M<G,I"BM["BL):6YT(&DL(&YL:7-T+"!S;&5P=#L**PES=')U8W0@8G5F9F5R
M7VAE860@*B!B:"P@*B!B:&YE>'0["BL**R!A9V%I;CH**PES;&5P="`](#`[
M"BL)9F]R*&YL:7-T(#T@,#L@;FQI<W0@/"!.4E],25-4.R!N;&ES="LK*2![
M"BL)"6)H(#T@;')U7VQI<W1;;FQI<W1=.PHK"0EI9B`H(6)H*0HK"0D)8V]N
M=&EN=64["BL)"69O<B`H:2`](&YR7V)U9F9E<G-?='EP95MN;&ES=%T@.R!I
M(#X@,"`["BL)"2`@("`@8F@@/2!B:&YE>'0L(&DM+2D**PD)>PHK"0D)8FAN
M97AT(#T@8F@M/F)?;F5X=%]F<F5E.PHK"0D):68@*&)H+3YB7V1E=B`A/2!D
M978I"BL)"0D)8V]N=&EN=64["BL)"0EI9B`H8G5F9F5R7VQO8VME9"AB:"DI
M"BL)"0E["BL)"0D)<VQE<'0@/2`Q.PHK"0D)"5]?=V%I=%]O;E]B=69F97(H
M8F@I.PHK"0D)?0HK"0D):68@*"%B:"T^8E]C;W5N="`F)@HK"0D)("`@("AD
M97-T<F]Y7V1I<G1Y7V)U9F9E<G,@?'P@(6)U9F9E<E]D:7)T>2AB:"DI*0HK
M"0D)"7!U=%]L87-T7V9R964H8F@I.PHK"0D):68@*'-L97!T*0HK"0D)"6=O
M=&\@86=A:6X["BL)"7T**PE]"BM]"BL*('9O:60@<V5T7V)L;V-K<VEZ92AK
M9&5V7W0@9&5V+"!I;G0@<VEZ92D*('L*(`EE>'1E<FX@:6YT("IB;&MS:7IE
M7W-I>F5;73L*+0EI;G0@:2P@;FQI<W0["BL):6YT(&DL(&YL:7-T+"!S;&5P
M=#L*(`ES=')U8W0@8G5F9F5R7VAE860@*B!B:"P@*F)H;F5X=#L*(`H@"6EF
M("@A8FQK<VEZ95]S:7IE6TU!2D]2*&1E=BE=*0I`0"`M-C,Q+#(W("LV-C8L
M,S4@0$`*(`DO*B!792!N965D('1O(&)E('%U:71E(&-A<F5F=6P@:&]W('=E
M(&1O('1H:7,@+2!W92!A<F4@;6]V:6YG(&5N=')I97,*(`D@*B!A<F]U;F0@
M;VX@=&AE(&9R964@;&ES="P@86YD('=E(&-A;B!G970@:6X@82!L;V]P(&EF
M('=E(&%R92!N;W0@8V%R969U;"X*(`D@*B\*+0EF;W(H;FQI<W0@/2`P.R!N
M;&ES="`\($Y27TQ)4U0[(&YL:7-T*RLI('L**R!A9V%I;CH**PES;&5P="`]
M(#`["BL@"69O<BAN;&ES="`](#`[(&YL:7-T(#P@3E)?3$E35#L@;FQI<W0K
M*RD@>PH@"0EB:"`](&QR=5]L:7-T6VYL:7-T73L*+0D)9F]R("AI(#T@;G)?
M8G5F9F5R<U]T>7!E6VYL:7-T72HR(#L@+2UI(#X@,"`[(&)H(#T@8FAN97AT
M*2!["BT)"0EI9B@A8F@I"BT)"0D)8G)E86L["BT*+0D)"6)H;F5X="`](&)H
M+3YB7VYE>'1?9G)E93L@"BT)"0EI9B`H8F@M/F)?9&5V("$](&1E=BD*+0D)
M"0D@8V]N=&EN=64["BT)"0EI9B`H8F@M/F)?<VEZ92`]/2!S:7IE*0HM"0D)
M"2!C;VYT:6YU93L*+0D)"6)H;F5X="T^8E]C;W5N="LK.PHM"0D)=V%I=%]O
M;E]B=69F97(H8F@I.PHM"0D)8FAN97AT+3YB7V-O=6YT+2T["BT)"0EI9B`H
M8F@M/F)?9&5V(#T](&1E=B`F)B!B:"T^8E]S:7IE("$]('-I>F4I('L*+0D)
M"0EC;&5A<E]B:70H0DA?1&ER='DL("9B:"T^8E]S=&%T92D["BT)"0D)8VQE
M87)?8FET*$)(7U5P=&]D871E+"`F8F@M/F)?<W1A=&4I.PHM"0D)"6-L96%R
M7V)I="A"2%]297$L("9B:"T^8E]S=&%T92D["BT)"0D)8F@M/F)?9FQU<VAT
M:6UE(#T@,#L**PD):68@*"%B:"D**PD)"6-O;G1I;G5E.PHK"0EF;W(@*&D@
M/2!N<E]B=69F97)S7W1Y<&5;;FQI<W1=(#L@:2`^(#`@.PHK"0D@("`@(&)H
M(#T@8FAN97AT+"!I+2TI"BL)"7L**PD)"6)H;F5X="`](&)H+3YB7VYE>'1?
M9G)E93L**PD)"6EF("AB:"T^8E]D978@(3T@9&5V('Q\(&)H+3YB7W-I>F4@
M/3T@<VEZ92D**PD)"0EC;VYT:6YU93L**PD)"6EF("AB=69F97)?9&ER='DH
M8F@I*0HK"0D)"7!R:6YT:RA+15).7T524B`B<V5T7V)L;V-K<VEZ93H@9&5V
M("5S(&)U9F9E<E]D:7)T>2`E;'4@<VEZ92`E;'5<;B(L(&MD979N86UE*&1E
M=BDL(&)H+3YB7V)L;V-K;G(L(&)H+3YB7W-I>F4I.PHK"0D):68@*&)U9F9E
M<E]L;V-K960H8F@I*0HK"0D)>PHK"0D)"7-L97!T(#T@,3L**PD)"0EW86ET
M7V]N7V)U9F9E<BAB:"D["B`)"0E]"BT)"0ER96UO=F5?9G)O;5]H87-H7W%U
M975E*&)H*3L**PD)"6EF("@A8F@M/F)?8V]U;G0I"BL)"0D)<'5T7VQA<W1?
M9G)E92AB:"D["BL)"0EE;'-E"BL)"0D)<')I;G1K*$M%4DY?15)2"BL)"0D)
M("`@("`@(")S971?8FQO8VMS:7IE.B`B"BL)"0D)("`@("`@(")B7V-O=6YT
M("5D+"!D978@)7,L(&)L;V-K("5L=2%<;B(L"BL)"0D)("`@("`@(&)H+3YB
M7V-O=6YT+"!B9&5V;F%M92AB:"T^8E]D978I+`HK"0D)"2`@("`@("!B:"T^
M8E]B;&]C:VYR*3L**PD)"6EF("AS;&5P="D**PD)"0EG;W1O(&%G86EN.PH@
M"0E]"B`)?0H@?0I`0"`M.#,Q+#D@*S@W-"PV($!`"B`)"5]?8G)E;'-E*&)U
M9BD["B`)"7)E='5R;CL*(`E]"BT)8G5F+3YB7V-O=6YT(#T@,#L*+0EB=68M
M/F)?<W1A=&4@/2`P.PHM"7)E;6]V95]F<F]M7W%U975E<RAB=68I.PH@"7!U
M=%]L87-T7V9R964H8G5F*3L*('T*(`ID:69F("UU<DX@,BXR+C$T<')E.2]F
M<R]D979I8V5S+F,@,BXR+C$T<')E.2UB=68M<F%C97,O9G,O9&5V:6-E<RYC
M"BTM+2`R+C(N,31P<F4Y+V9S+V1E=FEC97,N8PE3=6X@3V-T(#,Q(#(S.C,Q
M.C,S(#$Y.3D**RLK(#(N,BXQ-'!R93DM8G5F+7)A8V5S+V9S+V1E=FEC97,N
M8PE7960@1&5C("`Q(#`P.C4U.C`U(#$Y.3D*0$`@+3(Q-BPW("LR,38L."!`
M0`H@"6EF("AS8B`F)B!I;G9A;&ED871E7VEN;V1E<RAS8BDI"B`)"7!R:6YT
M:R@B5D93.B!B=7-Y(&EN;V1E<R!O;B!C:&%N9V5D(&UE9&EA+EQN(BD["B`*
M+0EI;G9A;&ED871E7V)U9F9E<G,H9&5V*3L**PDO*B!S<&5C:6%L.B!T<F%S
M:"!A;&P@9&ER='D@9&%T82!A<R!W96QL(&%S('1H92!M961I82!I<R!C:&%N
M9V5D("HO"BL)9&5S=')O>5]B=69F97)S*&1E=BD["B`*(`EI9B`H9F]P<RT^
M<F5V86QI9&%T92D*(`D)9F]P<RT^<F5V86QI9&%T92AD978I.PID:69F("UU
M<DX@,BXR+C$T<')E.2]F<R]S=7!E<BYC(#(N,BXQ-'!R93DM8G5F+7)A8V5S
M+V9S+W-U<&5R+F,*+2TM(#(N,BXQ-'!R93DO9G,O<W5P97(N8PE3=6X@3V-T
M(#,Q(#(S.C,Q.C,S(#$Y.3D**RLK(#(N,BXQ-'!R93DM8G5F+7)A8V5S+V9S
M+W-U<&5R+F,)5V5D($1E8R`@,2`P,#HU-3HP-2`Q.3DY"D!`("TQ,C<V+#<@
M*S$R-S8L,3`@0$`*(`D)=6UO=6YT7V5R<F]R(#T@9&]?=6UO=6YT*&]L9%]R
M;V]T7V1E=BPQ+"`P*3L*(`D):68@*"%U;6]U;G1?97)R;W(I('L*(`D)"7!R
M:6YT:R@B;VMA>5QN(BD["BT)"0EI;G9A;&ED871E7V)U9F9E<G,H;VQD7W)O
M;W1?9&5V*3L**PD)"2\J('-P96-I86PZ('1H92!O;&0@9&5V:6-E(&1R:79E
M<B!I<R!G;VEN9R!T;R!B90HK"0D)("`@82!R86UD:7-K(&%N9"!T:&4@<&]I
M;G0@;V8@=&AI<R!C86QL(&ES('1O(&9R964@:71S"BL)"0D@("!P<F]T96-T
M960@;65M;W)Y("AE=F5N(&EF(&1I<G1Y*2X@*B\**PD)"61E<W1R;WE?8G5F
M9F5R<RAO;&1?<F]O=%]D978I.PH@"0D)<F5T=7)N(#`["B`)"7T*(`D)<')I
M;G1K*$M%4DY?15)2(")E<G)O<B`E9%QN(BQU;6]U;G1?97)R;W(I.PID:69F
M("UU<DX@,BXR+C$T<')E.2]I;F-L=61E+VQI;G5X+V9S+F@@,BXR+C$T<')E
M.2UB=68M<F%C97,O:6YC;'5D92]L:6YU>"]F<RYH"BTM+2`R+C(N,31P<F4Y
M+VEN8VQU9&4O;&EN=7@O9G,N:`E7960@1&5C("`Q(#`P.C4T.C0T(#$Y.3D*
M*RLK(#(N,BXQ-'!R93DM8G5F+7)A8V5S+VEN8VQU9&4O;&EN=7@O9G,N:`E7
M960@1&5C("`Q(#`P.C4U.C`U(#$Y.3D*0$`@+3<X,RPW("LW.#,L.2!`0`H@
M97AT97)N(&EN="!C:&5C:U]D:7-K7V-H86YG92AK9&5V7W0@9&5V*3L*(&5X
M=&5R;B!I;G0@:6YV86QI9&%T95]I;F]D97,H<W1R=6-T('-U<&5R7V)L;V-K
M("H@<V(I.PH@97AT97)N('9O:60@:6YV86QI9&%T95]I;F]D95]P86=E<RAS
M=')U8W0@:6YO9&4@*BD["BUE>'1E<FX@=F]I9"!I;G9A;&ED871E7V)U9F9E
M<G,H:V1E=E]T(&1E=BD["BLC9&5F:6YE(&EN=F%L:61A=&5?8G5F9F5R<RAD
M978I"5]?:6YV86QI9&%T95]B=69F97)S*"AD978I+"`P*0HK(V1E9FEN92!D
M97-T<F]Y7V)U9F9E<G,H9&5V*0E?7VEN=F%L:61A=&5?8G5F9F5R<R@H9&5V
M*2P@,2D**V5X=&5R;B!V;VED(%]?:6YV86QI9&%T95]B=69F97)S*&MD979?
M="!D978L(&EN="D["B!E>'1E<FX@:6YT(&9L;W!P>5]I<U]W<"AI;G0@;6EN
M;W(I.PH@97AT97)N('9O:60@<WEN8U]I;F]D97,H:V1E=E]T(&1E=BD["B!E
M>'1E<FX@=F]I9"!W<FET95]I;F]D95]N;W<H<W1R=6-T(&EN;V1E("II;F]D
M92D["F1I9F8@+75R3B`R+C(N,31P<F4Y+VME<FYE;"]K<WEM<RYC(#(N,BXQ
M-'!R93DM8G5F+7)A8V5S+VME<FYE;"]K<WEM<RYC"BTM+2`R+C(N,31P<F4Y
M+VME<FYE;"]K<WEM<RYC"5=E9"!$96,@(#$@,#`Z-30Z-#0@,3DY.0HK*RL@
M,BXR+C$T<')E.2UB=68M<F%C97,O:V5R;F5L+VMS>6US+F,)5V5D($1E8R`@
M,2`P,#HU-3HP-2`Q.3DY"D!`("TQ-#@L-R`K,30X+#<@0$`*($584$]25%]3
M64U"3TPH9G!U="D["B!%6%!/4E1?4UE-0D],*'!U=%]F:6QP*3L*($584$]2
M5%]364U"3TPH8VAE8VM?9&ES:U]C:&%N9V4I.PHM15A03U)47U-934)/3"AI
M;G9A;&ED871E7V)U9F9E<G,I.PHK15A03U)47U-934)/3"A?7VEN=F%L:61A
M=&5?8G5F9F5R<RD["B!%6%!/4E1?4UE-0D],*&EN=F%L:61A=&5?:6YO9&5S
M*3L*($584$]25%]364U"3TPH:6YV86QI9&%T95]I;F]D95]P86=E<RD["B!%
D6%!/4E1?4UE-0D],*'1R=6YC871E7VEN;V1E7W!A9V5S*3L*
`
end


Reply to: