aboutsummaryrefslogtreecommitdiff
path: root/sys/nfsclient
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2003-02-26 00:24:19 +0000
committerJeff Roberson <jeff@FreeBSD.org>2003-02-26 00:24:19 +0000
commit48d4ffc11993ab52c129f1c7d15abde35a4f1556 (patch)
tree91c556af40931f66385f5f021ee7f081f5b1bd4a /sys/nfsclient
parent7e734c4149b230d533813ac0f65458cc7d6db6bb (diff)
downloadsrc-48d4ffc11993ab52c129f1c7d15abde35a4f1556.tar.gz
src-48d4ffc11993ab52c129f1c7d15abde35a4f1556.zip
- 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
Notes
Notes: svn path=/head/; revision=111514
Diffstat (limited to 'sys/nfsclient')
-rw-r--r--sys/nfsclient/nfs_vnops.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/nfsclient/nfs_vnops.c b/sys/nfsclient/nfs_vnops.c
index 718bc00390aa..bc00477b9c2b 100644
--- a/sys/nfsclient/nfs_vnops.c
+++ b/sys/nfsclient/nfs_vnops.c
@@ -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);