- 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:
parent
7e734c4149
commit
48d4ffc119
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user