Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Feb 1998 12:48:06 +0900 (JST)
From:      Michael Hancock <michaelh@cet.co.jp>
To:        freebsd-current@FreeBSD.ORG
Subject:   VFS_VRELE - WILLRELE must die
Message-ID:  <Pine.SV4.3.95.980227124118.2308A-101000@parkplace.cet.co.jp>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Implement the complement to all vpp generating ops called in the vfs_vn
layer.  Some people call this making it reflexive.

The 4K tar ball is attached, but I can upload this somewhere if you're
mailer doesn't do MIME. 

Regards,


Mike Hancock
------------------
The intent is to get rid of WILLRELE in vnode_if.src by making
a complement to all ops that return a vpp, VFS_VRELE.  This is
initially only for file systems that implement the following ops
that do a WILLRELE:

	vop_create, vop_whiteout, vop_mknod, vop_remove, vop_link,
	vop_rename, vop_mkdir, vop_rmdir, vop_symlink

This is initial DNA that doesn't do anything yet.  VFS_VRELE is
implemented but not called.  In the next phase vop implementations
vrele and the vrele part of vput will be moved to the top layer
vfs_vnops and made visible to all layers.  This will only be done
for vnode arguments that are released by the various fs vop
implementations.  Unlocking will still be done in the per fs layer
but the refcount decrement will be initiated at the top because it
doesn't hurt to hold a vnode reference a little longer.

VFS_VRELE implementations were made for the following file systems:

	ffs_vfsops.c mfs_vfsops.c nfs_vfsops.c msdosfs_vfsops.c
	devfs_vfsops.c nullfs_vfsops.c union_vfsops.c umapfs_vfsops.c

The following implementations just do ENOTSUPP because they don't
implement any of the WILLRELE vops:

	procfs_procfs.c cd9660_vfsops.c

The following code snippet from vn_open is an example of how it will
be added later.  vop_create releases the directory vnode, but we
will change it so that it is initiated in vn_open after the VOP_CREATE
returns.

Now...

	if (error = VOP_CREATE(ndp->ni_dvp, &ndp->ni_vp,
	    &ndp->ni_cnd, vap))
		return (error);

Later...

	error = VOP_CREATE(ndp->ni_dvp, &ndp->ni_vp, &ndp->ni_cnd, vap);
	VFS_VRELE(ndp->ni_dvp->vmount, ndp->ni_dvp);
	if (error)
		return (error);

[-- Attachment #2 --]
*4\mo8WW86-&Ff{jI$Hb)M6vմ-ryfHJ+?o=1S[{ĐTߢf2u෦چYRI4s%Q]wAuvMSĶc7,CSU4_57H?_qȸ'08=*rR^?b~0LtdKo^F~*F\&R/KoY_iL;6';Z״>::~O{tmhCUoM=*аOQ>Sɂ),ކS64Kӌ-%=b.iX|Q'єt:7q^mI{F6xoSeE
Eo+	U[+J]#] :gk?Y*
NUr4F
dPORXN:*-ۤӼTAF
i`[vu uBɢ o
7Hi%lJK9T{!;`ϢE<M1g>g8%[&!28۷oCuˢ>Q	U_>;?z(s:.]^]ہE,ZaٟPudhK%T_7@FF d"H$Wu]Z$\DgjhhCn'u9kCqCЍWƅ+pbvТE^'?eŸG?ܴ8XrjDw%0hxiN8vz(ɰwKBozAP@
6,"F?36sBǡn&e2E	<Y8]`??&
}O*@^_7~wA'nC{%8}2}{>TqA& Y`h
qPmPh	*ۜTjRR\9[q2{I6l|@:C.
]3&WG_ujP5[%ۢkh`@|"D__B_$~G|"]|,w\_- Ʉ0(Z}%tQ
BXUms~Tb_,o4kv ;vw7Պ7ժzT6{X?-+w߷鉤?uA|]񿦕_7tSo]P~snn<`2ZayL94p?Z;,|Y,Cܹq`-crD7\m?%Ҵd
GYD4ZϾ8r4}&
FD$+*Sk]R5\E/y!UZ-W(:ǙJkV&-]pz`eV02j"އ[8i59C`ܕj%i!tk3wLiOџ;xmo~9au
?w^8lI-׋'G(AG(F(CFXaOyG<
_a ^@̀<w\"z{WݬL` h`C<1ԌI+A
6V-M폦V	]95~݉\u߸¿E*&s,8!PhQ}pYg7śs	sE/é@7=y1K(M}`[P;.хG^_܊[ԳJl`L'.2F)0zvv7ApR 
(L:Y:-ؔ
JGwL4͢_nwBwp1vR51
*SC'[
E!l	`_נ˝&S/(K1ԟ]B0n#f::!YpX@1" >\c<62p;ҴpubUJHu5߈JH#tJ
rJ\8~?8_NH4?p_uTF_))?J|\?ZCӺ
|'_KUv=|t$%:(~+ܷG23ݨefB@	yIi|"LʍN0Y5R-I_t2/Ph(W}j:SP)*p]O@+RW<],	)
`C r>!<j}>[l,|j]C7F'4M/ea\'sԙ<9Olz1^+g!#o"lK/ĔG̗T@^q=qQfk>NvnqPIwl|\8#
WX
;fl<y^~P Hȼ`@Y?ϣ'
UpAnPQZ88O'h,ȼhhxh%*̓C_xyym7HDE3]`}E-ь=8eB)/ǓQ6Ʒ^/:z owp%L=j!`8gN?0UxL.UGcիx`wöh%'+e!؈Q׻[ꥹ݈xQ)h7N~	9PPQC
:I-S&GS]\R	QEd{	2
~֧7'H77uЩA֚-dzhF_AẠ="v]y〕=<RٶU}A[Wc|\W?qXEAcnpÆL3bq⦚"S4D0$4'A(n݀
q],H*@>
Sүx7pO29`[dFeC!AM U.cnX=EvGO`bC2h,J!:,qSsI}dl`Xi;t&b]75t7=A3?j~W?}wuDz/iwhԎŧv*ٸ!\7Η1,nmʎȼiw|c:O~bk3[2K8#]s.w}t=6S4aZE>?s5>ju/1ꀈt,PX5k}~reϰVSZeƗˋKaF[բPY̐V&dRU/Gtyqt翂Ϟ-"xq'B*FEBkdOZ@SH&
hjjjjjjj}tx

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SV4.3.95.980227124118.2308A-101000>