From: Linus Benedict Torvalds (torvalds@cc.helsinki.fi)
Date: 11/12/91


Subject: corrected buffer.c
Date: Tue, 12 Nov 1991 21:47:49 +0200
From: Linus Benedict Torvalds <torvalds@cc.helsinki.fi>

Ok, here's the new buffer.c-file, hopefully correcting the bug which
caused file system inconsistencies.

NOTE! This file is NOT official, and won't be used as a starting point
for future kernel cdiffs. Thus save the old buffer.c before using this.
It's just a temporary bug fix before a real release (which should come
out in December). Hopefully these kind of rather urgent bug-fixes won't
be too usual.

The changes are mostly to "getblk()", and are not final: it's a bug-fix,
and I'll have to tweak it a bit more for the real version. The current
version works fine, but it's a bit overzealous in trying to avoid
reclaiming dirty blocks: with this kernel patch the buffer-cache VERY
easily fills up with dirty blocks, at the expense of ordinary ones.
Thus "sync"ing is even more important with this fix: the dirty blocks
are kept around longer (too long in my opinion) with this routine.

                Linus (torvalds@kruuna.helsinki.fi)

PS: Re: Math libraries. There aren't any. When I talk about gcc
soft-float, I'm just talking about the general idea - I haven't
implemented (or ported) any real math functions. The only floating
point math that gcc currently knows about is add/sub/neg/mul/div (and
only for doubles, not floats). Gcc in the original 1.40-version cannot
handle soft-floats correctly: linux gcc has this corrected (thanks
mainly to bruce evans), but not used very much.

There might be stubs for sin/ln etc in the library: they should just
return 0.0, and are there (if they are) to get gawk to compile (and yes,
it works - kind of). If you do find routines for floats you can use
(and they are available out there), you can add them to the library with
"gar d libc.a stubs.o" (remove old routines)
"gar rs libc.a sin.o ln.o ..."
------ snip snip ------------------------
begin 644 buffer.c.Z
M'YV0+U0H *$"! @V:=S4P?/"S)P78NJ8,5-&CHLQ P42-(AB2 H0,7+DB&&0
M2<(Z<T!0>2/'3A@V9.9D?*% 0<",!D]$G%CQX@D0:=K 85.F31DW=%+205,&
MQ$Z*<EJ,"3.&*0@S==R,H9/FC9LY+D!(H5I&JE<R:;AZ38DFC)TR.,64.0K"
M[9LT9,J0<9H'A),B5HI(.5B&#E<W9^H"15I13ATX=$!4#8.X:1BG$J&"0%$&
MSY@RD*^R!+$4[D8R8>B$80'BC1G);^K(F5,F!>N(D1/.H5,FS%ZBAA,F+BWY
M)5$Y(,B\ 4HGK),G5(J$ !$D94+><AQ#EKEQJAL0=\*L:?I8\50VQUG/>6-4
M,L(6N]. H!VGSM'/*</(:>IF;MZ]="Q751ECK"&:'#C-011H+7@EE7%@J<04
M;?.A$1M,3C75&1W[&<5&7_6E42!K2\5V!AJ;)0&"A7#4YL),-=VTT7/134<%
M4_L!E9)73:$UQQ@LH884"&Z\P=N*%96A@V1,%2C<56R\ 0<<:921DADLX>2C
M@9-5%M:-:5B7TATX-I7656FE)-=NK*FX5$)KL!:&=9'-86$=,.&4D$L(H79D
MEV?H!:64<.31PI8/#@@6C J,D- 8;-21%P@\[(::'&>X@(8/ S7Z:*23\H"0
M0@P!Z889:62ZJ:=:@=J4J"<Q]"-39&C*J:.M2OKJJ N],)X<_;%A*ZN0ZDKI
MG&V\,$<>NQ4U+*[%AHKL"UT-J\"&%7UW'0A'D;&# KLYMA5F/,GQ!5.^;;2;
M?G1\\51%(/2P6;AUC/NNN>CNI<)')G3[+;WV9E;1N;WIN^*<:'RAFAA$;>&$
M%%\@$<042'3QKVI<C3$?A_5&=B_!Z19DQGYE?('0;A>G)N+&XD:FVAQK? %P
M9 5]'-Z9\CI1!1-,?+OMPU\(48411@@V1;P@P/ MN!BOG-"H3=EQUUXWM^N5
MNP++@<+,Y$(%LL%BH)&" GLHD "D::"0PK<)D)D&49N%W8(/8IC\1H%C)Y"
M@G/!\857*)@@-]U?5+VVV?&I_6T?-6V[[!PRYZ$5"E+C-7;9"6R;!MM<?YSO
M1F$OO;?D8WR1T!MYS:&XW@&!)T=:3<666Y&I+Q9@UQ6EI )-"82-]+IRM'LO
MVU@BAT(:/< P@Y \0"TT$0;O3Q0*ZS 0MC5?X1YVV&D];<;6)>+0MB'ZYW&
M:^.C,7?=: 6?M][H?2'''>Y&62 *5TB11'37B\TVXPG8#QUD\QVE*8!Q"G <
MZ;Z0%SL<;T@-O)S9-,<YC@6L7%\#'1I$YSMY 4]X62/>:(Z7O.FEP7D0@U[1
MI' TYJ6A>OW+'@BV=[ZXJ8]P#01!".050;/IS52'L0_;N.>]J]TK?>7+'/H&
MQ[XRV"%>/'0B"$Q@ J?<D'UI<)\/$Q"_^=7O;FO G_[X1[[_(6Z!ITN=XLS6
MP8VQ*WQ0$:'QD*<\%Z(P:$-;80NI9SWLK4![/JQA^M;'0"GN,#E.?-_9O!+$
M,@RQ:M^#8T60.$1!,K&03^Q!%)](12L2LGUT4&07Z<<P,(IQ?T7H7_D *$ "
M)FUQ,=)(0<"4$CG(+B%-&5"!QL24TB#G,F:(TI3ZTA8US>4[@-*+G-Q !CVY
M@4]X28V5ZH(>W$5E*@-JP5$X5"7K?&<IJ2D.;;Z$AC#I*3\@V \;5/:6#\TG
M2G=(YRW[HY[EW*$I;7D+:9;#H;[<K@T)"4H:]$">.0A'3\V1$$J8HZ/BH$=0
M7G'G8[RBF!.T(39(^<EH3B"EHYR G.;<2)A(8Y4U128\?7$-;-H@AH B9CXM
M$A1E]E('KB"$#GEH$TGA]**-0*$,4H(;H)ZTI<+PQILD;0I R4 &N*F4,JUI
MD1Q41M'45>0M.+E=E-Y (1VT8&P$P0F-I$,=-I2H#B>2C&SV@Q1WODE,K7&#
M.XLWJ"EUDT16P4MO=)35MD2&,GWQ#5K4XH:7I+,H;W )PYI2R@(=RHDB:LH=
MWL8&$*"D*6^59TUQR0*<S)2DX;QH5NCP@HY^IS]Z<<,)(K.&(L43G)$))J&Z
M^0(R2?,MO]Q/@EHTAC2\I*>[4T#E]J++F&WI"\E\8&1ZB#D*(LZ"'LM:!FNV
MP9HH<3--"((2GB %%$10A_*2P?M:"2RV-; '34C"<[K[W2K" \PF,$.$M Z
MMU6EKH5J:%I^0!#>"3($LATF<MM2&>\F<KR%(:!YI<@'>;U7!C P8 +H2L(Z
M-@]H4Z@"% 1CPNP%$GU;>\S &KN&+:2A"RZ 7 [=BX>)Q#<%FNRAWA( AYK*
M3,1:FP..OU@@$Z-8Q8ED6QL_*$DYR'$S=#3A'54H/1?"T(^ -!^(+[GBI+78
M#"\&+R+MH$@@GL21/H2D$;-&R0]O9I XE"*+73R#CVARRXJ\Y&,"Y*>FR(O*
M68R,@\V(P!'D!57] <&Y$&8&-QC8#M>SWQH^@H)&9\6@9^@/&5)P:"^0. 4I
M* '0)$:QL?FY#(#&)\(.G6@P?J28"5M8PP9MIT*3^M)=J,FZ,K88J(%@N(>]
MZ%N^,#+V?*$^9;"/ZCHGW<]15X*MZU!BF]+K-AS,3BT MGWZ.\$E7O$+_<%#
M*'UXR6S3@9!PV$\F/4FX<#N1;9:\MKFYS&UUBYN0WD9:MS>$;O2A&LU-1/0E
M2>P&.;CYSF+SX;VI[,3^$9+?_I;WM;W]K60C5I_-O@K)#A(FFOD7?2' ]Q?6
MS6N2?80/?-"AQKW=\;E@VH=PH(R(4" "(TR<Q!3?#6RR,V>]B*!\E^3XR.8"
M[PV5W,[DKAO)=P[FWBW<YT0'M[A_KG"E._'G]=X,T4U6<2A:\7U3/YF>@XYM
MI),,EDQ3F<:>ALM;3VTQM F>Z9#RAE_;1]A;@ZXUIWMULMFD(#7^:V2ZU9K7
M$#WF%F?CT;7-='EEO>)"=O?3_VYXDE%]-TZW ]3-=GC(EWOI22?<T"<.<.(Y
M7NN1+[P5&X[WFB;5FHLA4AGBB>IHO]U,KSE3,173P,A2V^B11YK.>);XGFM;
M]SOK6;4W$P*"LUMOY'5#[S6_(:0-_-H--#CA$%Z^YW^RX/M6=+_=/'K!^_[;
MEY=BYP\HZZ9IC-@8-#::F%EDY6Z9-=NZ--GT]MR6S5W]=!"*Z"B<?S@X?]31
M=VG3TW]:MGM,,(!"@33]]WWO(T@+F&9V$&-J5D4/6#<(ITGR-V/)1QKZ9S8;
M:(!@)R,%<05HT!<(,1X[-0<ZA2[(D0>Q,1]AD <N,(,2TA3[,2<4-5)3]1EF
MP4QIT15? 5S4,28]XA6K=1!@9$TI@0)9011S0(1UD2,WB!9#4AIM@%?A%":V
MD2#L41CE]%( =2*1T1930A>W<R9N S?W]$Y]@V26<5B^H4W9D24;,5G55#R?
MP5!BX!LI %(I82<70@:J%1DWB![$% 9EB$QKM4T?<ALUU5>YA#IF4DL%(X,P
M@GY>HWZ!TBZHIC!AL%CN%WVVXQ2*)D%[(W>>4S :M'\CM ,[$&77A0(9%S8]
M &ADT'X!6(HGIX$)!BQ^$7Q#=$E ,EK5\TC=8S7@<T1E9&8:ET-OMF)5E'U@
MU&]6EX'(UXO?$3KM1DC#B!0MT )\%DLX\01QDH(-M8D,4XZ?=29A,HBW5A%]
M 2F](0=R<@;=\TW+\85Y@2 ;L8-E82J#!801T@1<%1DJ11Q ,BDC11LPP1Z6
M11MDP!K'8X.@T1N'<09;J"[+<2: B"=[(1<@T ;U@B(7E2.@ABJ]M4V@I2V1
ML55KL"AAM1$W8AEL< 8LD1;.-E+)1 9+(A>&41'+M!=050:18E#Z%!&)H6QO
M42L9H3=,( 14 !(QX (Q,)4C 2.?%FH@( 1!0 1_,053@$1GAD2?E&<\P ,Q
MD (K0):$4XI,8W^I&#(@@(YL$$;;$GWQYY:8@XD#@W]"P1K4M33[T2*IH0/#
MESY(LXFLEFJ?2!2OIHL^M(':F $V'AS\7AT8%[+04/H4X'(A5';-F->IA!%
M%XO%AR(@MY5=^95AV7\IP -<Z95% )9(!(M&IX =.&/_%9NLB0*NJ4B]<X-K
M,$0 U ?@44YPTVB5R8%P\'T_]Q&'5'FA%'6R2#XSY$-\ QK?$S@V<XQ)9).W
M,Y@6:49$A(SMMXRQ*(R@^3[@N1SBF1ILDX9-T8QY!HO+HA68U(Q!%F;'&$G*
MZ#_,J)ZCI4CM>5B$F9EFPSBM,U8A,!TD^#:2U11\$QI5\R1TE5DD5D]&(0:H
MTQ=$22%AB :!USHO,86'J$^")2@B\%8B0(I)>#L(215,$1;%Q5#!%8NVB(O8
M!YEZ4Z#OB:"M\P1+P!I&H%Y!P#-9 !Y-T5IO\%I^98[WTE#$$5$I%6@JE18G
MD!)KD! 126TDRDR@E1MTD*66I1 0&3>?.5K)8QMEJFB",CYV4R!K&I3NT1O?
M<:,"BA0]$ /+AT7!DSQ]^@5SACK2!*@>^' ETVQN%VQ64F:X!X$]T$"!>H$D
MAFY?41'M<AUM)VV-BIZ265T(A&MBH$ZT$7=P66RJ6#,288K_M1,(-D#E939B
MEHQDYJK4.8L2P8V@^8V[2&,J-P8L1P5RD =/<CM_]W?W<G/Q*1XE\QC<*5V&
M$X*RY!13J#9P&!.*,0>\=3Y5\I&*5A=@FGQ*45)9$Z:P@13WR!T%D19AD02$
MB(TI88! \1K$ 7/AD1)9,86-60; 11-\B2^I2JT%$XH%EY>F9G>G>*KI%[#:
M>)BSB 8]0)=AE(NFUJLIYP8K)P*C6C!+(K&'!:N2]HL\PP5NH*R'*6>00:B\
M\:JN-)FCQ&-A) 5%T)6JM*Q%1*OB@Y[I1DB#6F<LZXN3N;%L4*J>BHTB*WP(
M)((@0(ZWH:_%D8T%)5-J,H6.^%=,]8->81S^M!QMH!\&8B0X$A>*=B6C,85/
M,B=*BAYA401@2ASZ<09U8!1#HG7@D18H<AG]88]<@54;H1 LU1.7B(JH*I<;
MZQMA0+"(MBVH,AMTP!HSZ *FZ!*8&85G, <5I+"9R+!H )C])SJ2^T$H\+8J
MN+B[43[_E3X16QCI2&JD&TH6^ZLL5[@\.9>J6Y<?2T""8H D:[*FB;)T)DWO
M\[(DA@(R2[/H*9]GUKH](+EO&[J8HH+7@6D^L*;7J3?]E[ITL+K1U[I)Y(!"
M89O_Y9D]"[Q;Q$5L(#^DI&C$.[-$$ 0UNT6>V8W?!HX^5)QF([G=XKR56SZS
M>IX FI[7-KXK&YE&&[2D6@:.NH$H8("'$ZIG]S$!10<H$"4O]3'=8HK_2G<H
MXD&JH7;#<[]G5S.6FANB8TG2Q7=O%@-G"6'O(P9(0SDAS&@V0 ,PH (Q ,R
M0 /E\Z%PH3<N+"\PC!<$\1$6S$SQB9SS&3<@T +R(@1,\ 1#L 1?, 5)H 5%
M\!'3>V:XMB^;@08KD)8? 8O0)WZO)'!E&3Q((V$)<&WRF\9#=&W?NF=F3#@"
M#'1J?&U5 WR\-\="UWPY XQ\O''BIL?"IS?0EQJ7 <23@1Q<+ 9O''J,MR(M
MP*>!O'ESX7Q?_,;%Z$//DT=&L\E2IL1O%L3Z\A'O=<,1%F%Q]L);;,IX$ 2I
M+&$ I#[T.V&?5W4<_$8?;,N7"7KA)WF17%UK[)R1+)U'5F$[<$*;-C%(D,P>
09L@(XXF+Y6,] (('E * ,N7
 
end