[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-commits-all
Subject:    svn commit: r193187 - in head/sys: fs/nfsclient kern nfsclient sys
From:       Alan Cox <alc () freebsd ! org>
Date:       2009-05-31 20:18:02
Message-ID: 200905312018.n4VKI21g053901 () svn ! freebsd ! org
[Download RAW message or body]

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-unsubscribe@freebsd.org"

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic