svn commit: r193187 - in head/sys: fs/nfsclient kern nfsclient sys
Alan Cox
alc at FreeBSD.org
Sun May 31 20:18:08 UTC 2009
Author: alc
Date: Sun May 31 20:18:02 2009
New Revision: 193187
URL: http://svn.freebsd.org/changeset/base/193187
Log:
nfs_write() can use the recently introduced vfs_bio_set_valid() instead of
vfs_bio_set_validclean(), thereby avoiding the page queues lock.
Garbage collect vfs_bio_set_validclean(). Nothing uses it any longer.
Modified:
head/sys/fs/nfsclient/nfs_clbio.c
head/sys/kern/vfs_bio.c
head/sys/nfsclient/nfs_bio.c
head/sys/sys/buf.h
Modified: head/sys/fs/nfsclient/nfs_clbio.c
==============================================================================
--- head/sys/fs/nfsclient/nfs_clbio.c Sun May 31 20:16:06 2009 (r193186)
+++ head/sys/fs/nfsclient/nfs_clbio.c Sun May 31 20:18:02 2009 (r193187)
@@ -1302,7 +1302,7 @@ again:
bp->b_dirtyoff = on;
bp->b_dirtyend = on + n;
}
- vfs_bio_set_validclean(bp, on, n);
+ vfs_bio_set_valid(bp, on, n);
}
/*
Modified: head/sys/kern/vfs_bio.c
==============================================================================
--- head/sys/kern/vfs_bio.c Sun May 31 20:16:06 2009 (r193186)
+++ head/sys/kern/vfs_bio.c Sun May 31 20:18:02 2009 (r193187)
@@ -3673,47 +3673,6 @@ vfs_bio_set_valid(struct buf *bp, int ba
}
/*
- * vfs_bio_set_validclean:
- *
- * Set the range within the buffer to valid and clean. The range is
- * relative to the beginning of the buffer, b_offset. Note that b_offset
- * itself may be offset from the beginning of the first page.
- *
- */
-
-void
-vfs_bio_set_validclean(struct buf *bp, int base, int size)
-{
- int i, n;
- vm_page_t m;
-
- if (!(bp->b_flags & B_VMIO))
- return;
- /*
- * Fixup base to be relative to beginning of first page.
- * Set initial n to be the maximum number of bytes in the
- * first page that can be validated.
- */
-
- base += (bp->b_offset & PAGE_MASK);
- n = PAGE_SIZE - (base & PAGE_MASK);
-
- VM_OBJECT_LOCK(bp->b_bufobj->bo_object);
- vm_page_lock_queues();
- for (i = base / PAGE_SIZE; size > 0 && i < bp->b_npages; ++i) {
- m = bp->b_pages[i];
- if (n > size)
- n = size;
- vm_page_set_validclean(m, base & PAGE_MASK, n);
- base += n;
- size -= n;
- n = PAGE_SIZE;
- }
- vm_page_unlock_queues();
- VM_OBJECT_UNLOCK(bp->b_bufobj->bo_object);
-}
-
-/*
* vfs_bio_clrbuf:
*
* If the specified buffer is a non-VMIO buffer, clear the entire
Modified: head/sys/nfsclient/nfs_bio.c
==============================================================================
--- head/sys/nfsclient/nfs_bio.c Sun May 31 20:16:06 2009 (r193186)
+++ head/sys/nfsclient/nfs_bio.c Sun May 31 20:18:02 2009 (r193187)
@@ -1200,7 +1200,7 @@ again:
bp->b_dirtyoff = on;
bp->b_dirtyend = on + n;
}
- vfs_bio_set_validclean(bp, on, n);
+ vfs_bio_set_valid(bp, on, n);
}
/*
Modified: head/sys/sys/buf.h
==============================================================================
--- head/sys/sys/buf.h Sun May 31 20:16:06 2009 (r193186)
+++ head/sys/sys/buf.h Sun May 31 20:18:02 2009 (r193187)
@@ -499,7 +499,6 @@ int cluster_read(struct vnode *, u_quad_
int cluster_wbuild(struct vnode *, long, daddr_t, int);
void cluster_write(struct vnode *, struct buf *, u_quad_t, int);
void vfs_bio_set_valid(struct buf *, int base, int size);
-void vfs_bio_set_validclean(struct buf *, int base, int size);
void vfs_bio_clrbuf(struct buf *);
void vfs_busy_pages(struct buf *, int clear_modify);
void vfs_unbusy_pages(struct buf *);
More information about the svn-src-all
mailing list