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 *);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to