- The interlock was not being droped in nfs_flush() if the first part of

an if clause was true.  Break the two clauses out into seperate statements
   since they require different actions.

Reported/Tested by:	jake
Spotted by:	jhb
This commit is contained in:
Jeff Roberson 2003-02-26 00:24:19 +00:00
parent 7e734c4149
commit 48d4ffc119

View File

@ -2659,8 +2659,11 @@ again:
if (bvecpos >= bvecsize)
break;
if ((bp->b_flags & (B_DELWRI | B_NEEDCOMMIT)) !=
(B_DELWRI | B_NEEDCOMMIT) ||
BUF_LOCK(bp,
(B_DELWRI | B_NEEDCOMMIT)) {
nbp = TAILQ_NEXT(bp, b_vnbufs);
continue;
}
if (BUF_LOCK(bp,
LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK,
VI_MTX(vp))) {
VI_LOCK(vp);