From owner-FreeBSD-users-jp@jp.FreeBSD.org Mon Sep 19 01:28:01 2005
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id j8IGS1t51244;
	Mon, 19 Sep 2005 01:28:01 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from antivirus3.cynet.co.jp (antivirus3.cynet.co.jp [202.221.162.73])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id j8IGRxI51231
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Mon, 19 Sep 2005 01:28:00 +0900 (JST)
	(envelope-from kouji@cty-net.ne.jp)
Received: from feed2.cynet.co.jp (feed2.cynet.co.jp [202.221.162.122])
	by antivirus3.cynet.co.jp (8.12.8/8.12.8) with SMTP id j8IGRweZ031300
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Mon, 19 Sep 2005 01:27:58 +0900
Received: (qmail 17266 invoked from network); 19 Sep 2005 01:27:59 +0900
Received: from mail.cty-net.ne.jp (HELO mailx.cty-net.ne.jp) (210.149.120.51)
  by feed2.cynet.co.jp with SMTP; 19 Sep 2005 01:27:59 +0900
Received: from [201.100.31.28] (f10-pc33.cty-net.ne.jp [210.128.78.33] (may be forged))
	by mailx.cty-net.ne.jp (8.11.6p2/8.11.6) with ESMTP id j8IGRw415072
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Mon, 19 Sep 2005 01:27:58 +0900 (JST)
Message-ID: <432D9585.4070207@cty-net.ne.jp>
From: Kouji Ito <kouji@cty-net.ne.jp>
User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716)
X-Accept-Language: ja, en-us, en
MIME-Version: 1.0
To: FreeBSD-users-jp@jp.FreeBSD.org
References: <4329131B.1070606@cty-net.ne.jp>
In-Reply-To: <4329131B.1070606@cty-net.ne.jp>
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Mon, 19 Sep 2005 01:27:49 +0900
X-Sequence: FreeBSD-users-jp 87068
Subject: [FreeBSD-users-jp 87068] Re: NFS =?ISO-2022-JP?B?GyRCJS8bKEI=?=
 =?ISO-2022-JP?B?GyRCJWklJCUiJXMlSCRIGyhC?= ENOLCK
 =?ISO-2022-JP?B?GyRCJEskRCQkJEYbKEI=?=
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: kouji@cty-net.ne.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+050320

$B$A$J$_$K!"Ev3:%m%8%C%/$O!"$3$s$J46$8$G$9!#(B(nfs_vnops.c,v 1.205 $B$N>l9g(B)
error$B$,(BENOLCK$B$N>l9g$O!$%j%H%i%$$9$k$,!"%j%H%i%$8e!"(B
for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) $B$b$7$/$O!"(B
if (BUF_LOCK(bp, LK_EXCLUSIVE | LK_NOWAIT, NULL)) $B$,@.N)$7$J$$>l9g$O!"(B
error $B$NCM$O!"(BENOLCK$B$N$^$^!"$3$N=hM}$rH4$1$F$7$^$$!"(B
$B%"%W%j%1!<%7%g%sB&$KDLCN$5$l$F$7$^$&!#(B




/*
* Start/do any write(s) that are required.
*/
loop:
s = splbio();
VI_LOCK(vp);
for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) {
nbp = TAILQ_NEXT(bp, b_vnbufs);
if (BUF_LOCK(bp, LK_EXCLUSIVE | LK_NOWAIT, NULL)) {
if (waitfor != MNT_WAIT || passone)
continue;

error = BUF_TIMELOCK(bp,
LK_EXCLUSIVE | LK_SLEEPFAIL | LK_INTERLOCK,
VI_MTX(vp), "nfsfsync", slpflag, slptimeo);
splx(s);
if (error == 0)
panic("nfs_fsync: inconsistent lock");
if (error == ENOLCK)
goto loop; /* error$B$,(BENOLCK$B$N>l9g$O!"%j%H%i%$(B */
if (nfs_sigintr(nmp, NULL, td)) {
error = EINTR;
goto done;
}
if (slpflag == PCATCH) {
slpflag = 0;
slptimeo = 2 * hz;
}
goto loop;
}
if ((bp->b_flags & B_DELWRI) == 0)
panic("nfs_fsync: not dirty");
if ((passone || !commit) && (bp->b_flags & B_NEEDCOMMIT)) {
BUF_UNLOCK(bp);
continue;
}
VI_UNLOCK(vp);
bremfree(bp);
if (passone || !commit)
bp->b_flags |= B_ASYNC;
else
bp->b_flags |= B_ASYNC | B_WRITEINPROG;
splx(s);
BUF_WRITE(bp);
goto loop;
}




Kouji Ito wrote:

>$B$3$s$A$K$O!"$3$N(BML$B$K$O$$$D$b$*@$OC$K$J$C$F$$$^$9!#(B
>$B0KF#$H?=$7$^$9!#(B
>
>FreeBSD$B$r(BNFS$B%/%i%$%"%s%H$H$7$F;HMQ$7$?$H$-$K!"$A$g$C$HIT2D2r$J8=>]$,(B
>$BH/@8$7$^$7$?!#;d$ND4::$G$O!"%+!<%M%k$N%P%0$N2DG=@-$,$"$k$N$G$O$J$$$+(B
>$B$H9M$($F$$$k$N$G$9$,!"$J$K$V$s%+!<%M%k$NCf$NOC$J$N$G!"3'$5$s$N0U8+(B
>$B$r;G$$$?$$$H;W$C$F$$$^$9!#(B
>
>$B!V8=>]!W(B
>FreeBSD 5.1RELEASE$B$r(BNFS$B%/%i%$%"%s%H$K!"(BNetBSD1.61$B$r(BNFS$B%5!<%P$H$7(B
>FreeBSD$BB&$G!"(BNFS$B%^%&%s%H$7$?%U%!%$%k%7%9%F%`$KBP$7$F!"%U%!%$%k$N=q$-9~(B
>$B$_$r9T$&$H!"(Bclose(2)$B$,(B-1$B$rJV$7!"$=$N$H$-$N(Berrno$B$K$O!"(BENOLCK$B$,%;%C%H$5$l(B
>$B$F$$$k!#%U%!%$%k$N=q$-9~$_$K:]$7$F$O!"GSB>$O3]$1$F$$$J$$!#(B
>$BH/@8IQEY$O$+$J$jDc$/!"%U%!%$%k$N=q$-9~$_$r1d!9<B9T$7B3$1$k%W%m%0%i%`$r(B
>$B:n@.$7!"F0:n$5$;$F$b?tF|$K(B1$B2s$G$l$P%i%C%-!<$H$$$&%l%Y%k!#(B
>
>$B!VD4::$7$?$3$H!W(B
>man 2 close $B$r$7$F$b!"(Bclose(2)$B$,<:GT$7$?:]!"(Berrno$B$K(BENOLCK$B$,%;%C%H$5$l$k(B
>$B%1!<%9$K4X$9$k5-=R$O$J$7!#(B
>
>$B%+!<%M%k$N%=!<%9$+$i(Bclose(2)$B$,<:GT$7$?:]!"(Berrno$B$K(BENOLCK$B$,%;%C%H$5$l$k(B
>$B;v$,$"$k$N$+$rD4$Y$?$H$3$m!"(BNFS$B$KBP$7$F=q$-9~$_$r9T$&>l9g$O!"$=$l$i$7(B
>$B$$=hM}$,$"$k$3$H$r3NG'!#(B(sys/nfsclient/nfs_vnops.c$B!!(BRev 1.258$B$N>l9g$O!"(B
>2821$B9TL\<~JU$N=hM}(B nfs_flush()$B$G$9!#(B)
>
>"FreeBSD ENOLCK"$B$G%0%0$C$F$_$k$H!"$=$&$$$&;vNc$,$"$k$3$H$r3NG'!#(B
>http://www.sleepycat.com/docs/ref/build_unix/freebsd.html
>
>nfs_vnops.c$B$N2a5n$N(BRev$B$rD/$a$F9T$/$H!"(BRev1.131$B$+$i(BRev1.132$B$G$NJQ99$G!"(B
>ENOLCK$B$K4X$9$k=hM}$,DI2C$5$l$F$$$k!#!J$H8@$&$h$j$b!"(Bstruct buf$B$N%m%C%/(B
>$BJ}K!$rJQ$($?$N$+$J!)!K(B
>
>$B!V(Bnfs_vnops.c$B$K4X$7$F!J$"$^$j<+?H$J$$$G$9!#!K!W(B
>nfs_vnops.c$B$N(Bnfs_flisu()$B$N(B"Start/do any write(s) that are required."$B$H$$$&(B
>$B%3%a%s%H0J2<$N%m%8%C%/$r8+$k$H!"(BBUF_TIMELOCK()$B$,(BENOLCK$B$rJV$7$?>l9g!"(B
>$B%j%H%i%$$r9T$&MM$K$J$C$F$$$k!#(B
>
>$B$7$+$7!"%j%H%i%$$r9T$C$?$H$-!":FEY(BBUF_TIMELOCK()$B$,8F$P$l$J$$%1!<%9$,(B
>$B$"$C$?>l9g!"(Berror$B$K$O!"(BENOLCK$B$,%;%C%H$5$l$?$^$^$H$J$j!"7k2LE*$K(Bclose(2)
>$B$O%(%i!<%j%?!<%s$7!"(Berrno$B$K$O!"(BENOLCK$B$,%;%C%H$5$l$F$7$^$&!#(B
>
>$B$=$b$=$b$3$3$N=hM}$O!"(BNFS$B%5!<%PB&$KBP$7$F=q$-9~$_$,9T$o$l$F$$$J$$(B
>$B%P%C%U%!$r%U%i%C%7%e$9$k=hM}$@$HFI$_$^$7$?!#$=$7$F!"$A$g$&$I(BNFS$B%5!<%P$K(B
>$B%P%C%U%!$r%U%i%C%7%e$7$F$$$k:GCf$K$3$3$N=hM}$rDL2a$7$?>l9g!"0lEY$O!"(B
>ENOLCK$B$K$J$k$,!":FEY%U%i%C%7%e$5$l$F$$$J$$%P%C%U%!$r%A%'%C%/$7$?;~$O(B
>$B$9$G$K%U%i%C%7%e:Q$_$K$J$C$F$$$?$H$$$&%1!<%9$b$"$k$N$G$OL5$$$+$H;W$$$^$9!#(B
>$B$3$N>l9g!"(BNFS$B%5!<%PB&$K$-$A$s$H=q$-9~$_$,=*$C$?$K$b$+$+$o$i$:!"(B
>error$B$NCM$O!"A02s$N(BENOLCK$B$N$^$^$H$J$C$F$7$^$&!#(B
>
>$B$h$C$F!"(BBUF_TIMELOCK()$B$,(BENOLCK$B$rJV$7$?>l9g%j%H%i%$$9$kA0$K!"(Berror$B$r(B
>$B%/%j%"$9$kI,MW$,$"$k$N$G$O$J$$$+$H9M$($F$$$^$9!#(B
>
>$B!V$d$C$F$_$?!W(B
>BUF_TIMELOCK()$B$,(BENOLCK$B$rJV$7$?>l9g!"%j%H%i%$$9$kA0$K!"(Berror$B$r(B0$B$G(B
>$B%/%j%"$9$k=hM}$rDI2C$7!"%+!<%M%k$r:n$jD>$7!":FEY:F8=;n83$r9T$C$F$_$?$H$3(B
>$B$m$&$^$/F0$$$F$$$kMM$K;W$($k!#(B
>
>
>$B$H8@$&$o$1$G!";d$N7kO@$H$7$F$O!"(BNFS$B%5!<%P$d!"(BNFS$B%^%&%s%H$N;EJ}$J$I$K(B
>$B5/0x$9$kOC$G$O$J$/!"(BFreeBSD$B$N(BNFS$B%/%i%$%"%s%H$H$7$F$N=hM}!"(B
>nfs_vnops.c$B$,%P%0$C$F$$$k$N$G$O$J$$$+$H9M$($F$$$k$N$G$9$,!"(B
>$B$$$+$s$;$s;d$N5;NL$G$O7kO@$,=P$;$=$&$K$"$j$^$;$s!#0-KbK\Fq$7$$$G$9!#!J!(!(!K(B
>
>$B@'Hs!"3'$5$s$N0U8+$,J9$-$?$$$H;W$$$^$9!#(B
>$B$A$J$_$K!"$3$N(Bnfs_vnops.c$B$NOC$O!"$3$3?tG/$N(BFreeBSD$B$NA4$F$N%P!<%8%g%s$K(B
>$B6&DL$NOC$J$N$+$J$!$H$b;W$C$F$$$^$9!#(B
>
>$B59$7$/$*4j$$$7$^$9!#(B
>
>
>
>
>
>  
>

