Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Aug 1997 02:20:41 +0900
From:      KATO Takenori <kato@migmatite.eps.nagoya-u.ac.jp>
To:        current@FreeBSD.org
Cc:        dyson@FreeBSD.org, bde@FreeBSD.org
Subject:   Read-only mount of union filesystem
Message-ID:  <199708131720.CAA03222@gneiss.eps.nagoya-u.ac.jp>

next in thread | raw e-mail | index | archive | help
This mail is Cc'ed to Bruce who notified me the problem, and also to
John who handbook says coordinator of union fs is.

Bruce notified me that union fs doesn't support read-only mount.  I,
now, consider that there are two ways to implement read-only mount:

  1. To modify each fs layer stuff.
  2. To modify vfs layer stuff.

FreeBSD-current chose first way that each filesystem stuff should
handle MNT_RDONLY flag.  On the contrary, NetBSD uses later way and
MNT_RDONLY flag is handled in sys/kern/vfs_{lookup,syscall,vnops}.c.
I will add patches for above two ways below.

I prefer latter way because it is general way and maintainer of each
filesystem doesn't need to be care of upper layer.

1. Following patch supports rdonly moount in union fs layer:
---------- BEGIN ----------
begin 644 rdonly-unionfs.diff.gz
M'XL(",4I\3,``W)D;VYL>2UU;FEO;F9S+F1I9F8`K95[C^(V$,#_#I]B3I4X
M2!-VR=Z&EU@)+;F6'A=66>!:515*$X=-+[$CV\EJ[_79:SLD0(\[ME412BS/
MT_.;<<(XBL#T:>`">V(7:<R"B%WD.":X0VB\+9>;`I.,=8*O=([%#5W7G^-&
M>X="F.1;Z%Y!UQI:O6&W"]W!H-<P3?-,C'_:VL/KG:U^_%/)6%W;L*PNJ`WI
MO-P8@%B;#0`MQAQB]O@0<T1R/I);C-,\X%#XG%/QE'N-'^5?N]#E$W28QLQ/
M$O((CU08@M!$:<:`$^`/"*(X0>(08@]2DF,N$J;(#TV"DZ=.Z>%"ON((6JT`
M9^9-@#=1XF\9-&%V/Y_<+V_=-C2;T`H+(2TVRHUYDV*N](3:6W>Y\:8+=_Z;
M5)3>M-H5]E,4DPS&8Y@Z<V?IP*=/<$+H.>[DK=-N*VN*>$XQM!QO\?J^/9(G
M!O@ACD(4`2;\"7%5+I'RH:<$8>GI2N8@Q)IV*,PX_=WZ0\I?=EY*C9.$[%>&
M90\."/4LP^KW:T+:9_7,$:6$PAC*;D@(>9]GW5:>FC=YNLFS#-$B,Z"I5J)L
M1IF/IC5KF<A-'4S;@?P?2%8H56&J%,?@_+*Z7WK.<N6Y"N/W("MS[5^1/HGZ
MUG,F9U'#Q]*!3/=%0H+WF4\1YF4+[.GM\AS#E_GB]LW=1)@OR\J=Z!-)2(E4
MQ0\[9'_<Z6(I_C(\5.'#'`MTN$(GLZS8U7H2U*FFL:\O#?OZ>M\TMCTP[/Y5
MW335#&,2(M"+;/3U)O,+%):2\[/-&1!\T`[L_&3[H@:^X"EB-6']SIL).+(7
MROUGT*Y@L<>8!P_'AOPI0Y4\\!F"M>?\-(1R.9UYU7+NOAF>X?:YFNN6A`#'
M5-KP8@SN:CY?WU507L]^7=VU<FR`G":Y4R4FK&4]3P'KV9;1L_M[8+W!I=&_
MM"M@'P_XE`->0LK%]0+KY6+ESA9N78'V(<Z,D@!T&;P49^IL1Y>X7OA[N5B/
MJIM?#>SH6;?[?^B`[Z+63U[AA30I_-WDB-JOW<5Z,I=378GR.)2"EGAO>+N6
ME[=1I;3=*6V/E6JYS^,4=7BQ82@X"G/L)OV6VEY#8I*1Y*(.]8UO"LAOBJPS
MJ#K_[.,P066GD@@$,1R(Q/`61/$1!?+G7T@P%'?Q!T0)L/@#,AI_`Y;ZYF.Q
#"```
`
end
---------- END ----------

I'm not 100% sure of the change in union_lookup().


2. Following patch supports rdonly mount in vfs layer:
---------- BEGIN ----------
begin 644 rdonly-vfs.diff.gz
M'XL("!PG\3,``W)D;VYL>2UV9G,N9&EF9@#M66UOXC@0_MS^BKDO7>`")>$E
M2:NNQ+7I'BJ%%=#NK4ZGR$T,C0I.E)CTJMO^]QL[A`*%"G8%M-U%;>+8,V//
M,\],K-CU>CW(D]!I0O00'=[1D!7\T.L?QKW('OC^W2@H.).AF=[]7"[W@M+>
M%^I";=0'M02J>E0L'97*H)JFOI_/YQ=;?*Y2T1*5W.Q/3ETN591R6079`;"W
M!SFH]\`)*>$>ZP-A+A`.%&]^#P+";QD94@7X+67@$/SW6>2Y-$R5R6#@WPO-
MGC>@P'VXH8DUZA;&,H?[O^'=ZT$F='TV>,C"?W)DCX:A'\()6.W6>><XZ>O[
MP@9QD\='Z7>Z:&SG=[5H^/8-,LP-\A^99[LQWF-[Z(\8SW\<,F[W!J0/!W#9
M[-KMLU:S\36[EI>+0E71#*6"X4]#=2BON/HS+Y(.@.N%U.%^^`#WH<<I8L#I
M,.`1^`S0&S<O%RY]1.K@6%1(3$CGIGP[.)#]^,LX#%USF"T0]/P`3D[@S&I8
M74L`L&"P;35KE];$VP7.IKYJQS*8B5N523`WX=9TS-PEH1J'"65DI#/WA/&`
MA)1QA&/-4&>WAN`BHE3+NE*ME-Y63E?+!BZZO/N<WDHN5_6R4C6*[RV7JWH%
MW=)VGLM3H5J6SZ\LC]V7MA#8XR!\T?PFXJE_R3;B26#!1J*T9"/QDM)+6PE5
MURJ*JI>>"D^,.`!S"U@VXT"Z?-WZ;#>L6L?*Q($"XB__,;!'F)>N`G+`_M*N
M=ZVLE(X9[FJ<.RG;N+"MOTX;5YWZ-0(N'MM6M_T5+:`L!OBZUNVV[>95HY$Y
MB)%58=(MFX68R.A&N)S.::W]*3,B:%)V)6)I<,3Z.E97V)*S)J9FEQF,%Q>,
M.,HD#R'EHY!!1MJ174E52S'1)RFQ34Q$NJQ`<YD?<_04F`PBBMP5@TO`717=
MM>%%G<>5,%[,PZJ*F%?-61YF(AZ.'`XQ\UT*N6P/)^W9+N'DO3%3B%XU&ZW3
M"RE9G`PL9VE5L%2?8^G.$'OSO%TK`HLY;!J*:A2KK[*6#@4?9D`3/?BRA%JC
M\=EJ7W8V6U01%P1'-=YY45T1YBU75Z-41O#+VANIKIOCZOIEUB@+WE:,GZ[,
M;IK)/UYO#;V$H3&T5UEO1YX[BQYVS(GTYT7ZJ<CFJK!A*JI9U-YY%5X._BKH
M;[DXFRK2V-1^T7AU&ILE`5FY^HO&KXC&%0UC4E7?R!YCV\1>?^=AZKCS,`WS
MI]MY[(CV/[XA,4U3T8I%<R>5?`(-X=Z0%GAL1]3!Z7G\=_&?\>,2038G.1+/
MZ$^Q6)S;F#\SK2XV/7QN6EUH>E.O"*VHZ1B+J0/'-_F*6#FHWQ'5U</Z'7'=
MW,OGQ:_N6!6#9Y_<QYTR1Y>JK/&Q?:E&17WA2[LI7H]Z4AJ2^JXIFCKAISAP
M&!^__#Y[_++JH<OQ6''$!C2*Q"%;,NQ%0"!"ZE(.&!("-X+'HNG<DI`XG(9C
M39?&GD/1O#B48UQ,E5I)YB@D@H?BMB+'T3$4WHON/>[<IAK\(:#IB$.0[==M
MZ],1),VS>CMM-IH71U)HP@29)=GC*<UFJYF*G_XYT>Q@&3^:DCJOG[?2L3]J
M9Y-F(YW@!D&]2^P^BJN\3,["ZCV!1$@_1!`A:!AX3O_E0"+$U1/'DX#^W8Z%
M!6;R]:P`#Q_$,68OI!@'#J,`,75H`=#@6/@>\27>0!$-A[`/')ZB[K%^8?]_
(951%\*DB``#$
`
end
---------- END ----------

After this patch is aplied, redundant code remains in each filesystem
stuff, but it should not have bad effect except for filesize and
execution time.

I will commit one of them after discussion.  Please comment.


----
KATO Takenori <kato@ganko.eps.nagoya-u.ac.jp>
Dept. Earth Planet. Sci., Nagoya Univ.,  Nagoya, 464-01, Japan
PGP public key: finger kato@eclogite.eps.nagoya-u.ac.jp
------------------- Powered by FreeBSD(98) -------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708131720.CAA03222>