diff options
author | Kirk McKusick <mckusick@FreeBSD.org> | 1999-06-26 02:47:16 +0000 |
---|---|---|
committer | Kirk McKusick <mckusick@FreeBSD.org> | 1999-06-26 02:47:16 +0000 |
commit | 67812eacd74d5841e890b703d4ec2d5a76288830 (patch) | |
tree | daad70481467b7aa233a8f5e919b7eec6d7cc908 /sys/gnu | |
parent | 5a903f8d735f0cc4a378e9f85fa3ad30a675df06 (diff) | |
download | src-67812eacd74d5841e890b703d4ec2d5a76288830.tar.gz src-67812eacd74d5841e890b703d4ec2d5a76288830.zip |
Convert buffer locking from using the B_BUSY and B_WANTED flags to using
lockmgr locks. This commit should be functionally equivalent to the old
semantics. That is, all buffer locking is done with LK_EXCLUSIVE
requests. Changes to take advantage of LK_SHARED and LK_RECURSIVE will
be done in future commits.
Notes
Notes:
svn path=/head/; revision=48225
Diffstat (limited to 'sys/gnu')
-rw-r--r-- | sys/gnu/ext2fs/ext2_vnops.c | 3 | ||||
-rw-r--r-- | sys/gnu/ext2fs/fs.h | 2 | ||||
-rw-r--r-- | sys/gnu/fs/ext2fs/ext2_vnops.c | 3 | ||||
-rw-r--r-- | sys/gnu/fs/ext2fs/fs.h | 2 |
4 files changed, 4 insertions, 6 deletions
diff --git a/sys/gnu/ext2fs/ext2_vnops.c b/sys/gnu/ext2fs/ext2_vnops.c index c3b1263830f3..82eedd8996cf 100644 --- a/sys/gnu/ext2fs/ext2_vnops.c +++ b/sys/gnu/ext2fs/ext2_vnops.c @@ -198,12 +198,11 @@ loop: s = splbio(); for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) { nbp = TAILQ_NEXT(bp, b_vnbufs); - if ((bp->b_flags & B_BUSY)) + if (BUF_LOCK(bp, LK_EXCLUSIVE | LK_NOWAIT)) continue; if ((bp->b_flags & B_DELWRI) == 0) panic("ext2_fsync: not dirty"); bremfree(bp); - bp->b_flags |= B_BUSY; splx(s); /* * Wait for I/O associated with indirect blocks to complete, diff --git a/sys/gnu/ext2fs/fs.h b/sys/gnu/ext2fs/fs.h index 17b5beb7fa16..b8dab54606ae 100644 --- a/sys/gnu/ext2fs/fs.h +++ b/sys/gnu/ext2fs/fs.h @@ -173,8 +173,8 @@ extern u_char *fragtbl[]; s = splbio(); \ flags = (bp)->b_flags; \ (bp)->b_flags &= ~(B_DIRTY | B_LOCKED); \ + BUF_LOCK(bp, LK_EXCLUSIVE); \ bremfree(bp); \ - (bp)->b_flags |= B_BUSY; \ splx(s); \ if (flags & B_DIRTY) \ bdwrite(bp); \ diff --git a/sys/gnu/fs/ext2fs/ext2_vnops.c b/sys/gnu/fs/ext2fs/ext2_vnops.c index c3b1263830f3..82eedd8996cf 100644 --- a/sys/gnu/fs/ext2fs/ext2_vnops.c +++ b/sys/gnu/fs/ext2fs/ext2_vnops.c @@ -198,12 +198,11 @@ loop: s = splbio(); for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) { nbp = TAILQ_NEXT(bp, b_vnbufs); - if ((bp->b_flags & B_BUSY)) + if (BUF_LOCK(bp, LK_EXCLUSIVE | LK_NOWAIT)) continue; if ((bp->b_flags & B_DELWRI) == 0) panic("ext2_fsync: not dirty"); bremfree(bp); - bp->b_flags |= B_BUSY; splx(s); /* * Wait for I/O associated with indirect blocks to complete, diff --git a/sys/gnu/fs/ext2fs/fs.h b/sys/gnu/fs/ext2fs/fs.h index 17b5beb7fa16..b8dab54606ae 100644 --- a/sys/gnu/fs/ext2fs/fs.h +++ b/sys/gnu/fs/ext2fs/fs.h @@ -173,8 +173,8 @@ extern u_char *fragtbl[]; s = splbio(); \ flags = (bp)->b_flags; \ (bp)->b_flags &= ~(B_DIRTY | B_LOCKED); \ + BUF_LOCK(bp, LK_EXCLUSIVE); \ bremfree(bp); \ - (bp)->b_flags |= B_BUSY; \ splx(s); \ if (flags & B_DIRTY) \ bdwrite(bp); \ |