git: 22f23299b7ed - stable/13 - b_vflags update requries bufobj lock

Konstantin Belousov kib at FreeBSD.org
Fri Apr 23 11:15:29 UTC 2021


The branch stable/13 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=22f23299b7ed96932a4b9e8b3a93fc233af1f2d4

commit 22f23299b7ed96932a4b9e8b3a93fc233af1f2d4
Author:     Konstantin Belousov <kib at FreeBSD.org>
AuthorDate: 2021-04-13 10:22:56 +0000
Commit:     Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-04-23 11:14:10 +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 786fb43c7d81..2cc16ab2a2c1 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -7523,7 +7523,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 582ccccc2e12..4e4e0b78fe4d 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -321,8 +321,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;
@@ -385,6 +386,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-all mailing list