git: db38075bd956 - stable/12 - b_vflags update requries bufobj lock
Konstantin Belousov
kib at FreeBSD.org
Sat May 1 00:39:17 UTC 2021
The branch stable/12 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=db38075bd9560aeb8cb7d9f30ba39d737e4abc7d
commit db38075bd9560aeb8cb7d9f30ba39d737e4abc7d
Author: Konstantin Belousov <kib at FreeBSD.org>
AuthorDate: 2021-04-13 10:22:56 +0000
Commit: Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-05-01 00:38:30 +0000
b_vflags update requries bufobj lock
(cherry picked from commit e3d675958539eee899d42438f5b46a26f3c64902)
---
sys/ufs/ffs/ffs_softdep.c | 2 ++
sys/ufs/ffs/ffs_vnops.c | 4 +++-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 895410cef152..bc83b92ee384 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -7179,7 +7179,9 @@ cleanrestart:
BO_LOCK(bo);
goto cleanrestart;
}
+ BO_LOCK(bo);
bp->b_vflags |= BV_SCANNED;
+ BO_UNLOCK(bo);
bremfree(bp);
if (blkoff != 0) {
allocbuf(bp, blkoff);
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 17dfb1ff3883..9dae437f9a76 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -287,8 +287,9 @@ loop:
if (BUF_LOCK(bp,
LK_EXCLUSIVE | LK_SLEEPFAIL | LK_INTERLOCK,
BO_LOCKPTR(bo)) != 0) {
+ BO_LOCK(bo);
bp->b_vflags &= ~BV_SCANNED;
- goto next;
+ goto next_locked;
}
} else
continue;
@@ -328,6 +329,7 @@ next:
* to start from a known point.
*/
BO_LOCK(bo);
+next_locked:
nbp = TAILQ_FIRST(&bo->bo_dirty.bv_hd);
}
if (waitfor != MNT_WAIT) {
More information about the dev-commits-src-branches
mailing list