Author: kib
Date: Thu Mar 21 07:28:15 2013
New Revision: 248569
URL: http://svnweb.freebsd.org/changeset/base/248569

Log:
  Only size and create the bio_transient_map when unmapped buffers are
  enabled.  Now, disabling the unmapped buffers should result in the
  kernel memory map identical to pre-r248550.
  
  Sponsored by: The FreeBSD Foundation

Modified:
  head/sys/kern/vfs_bio.c
  head/sys/vm/vm_init.c

Modified: head/sys/kern/vfs_bio.c
==============================================================================
--- head/sys/kern/vfs_bio.c     Thu Mar 21 07:26:33 2013        (r248568)
+++ head/sys/kern/vfs_bio.c     Thu Mar 21 07:28:15 2013        (r248569)
@@ -586,7 +586,7 @@ kern_vfs_bio_buffer_alloc(caddr_t v, lon
         * allows to not trim the buffer KVA for the architectures
         * with ample KVA space.
         */
-       if (bio_transient_maxcnt == 0) {
+       if (bio_transient_maxcnt == 0 && unmapped_buf_allowed) {
                maxbuf_sz = maxbcache != 0 ? maxbcache : maxbuf * BKVASIZE;
                buf_sz = (long)nbuf * BKVASIZE;
                if (buf_sz < maxbuf_sz / 10 * 9) {

Modified: head/sys/vm/vm_init.c
==============================================================================
--- head/sys/vm/vm_init.c       Thu Mar 21 07:26:33 2013        (r248568)
+++ head/sys/vm/vm_init.c       Thu Mar 21 07:28:15 2013        (r248569)
@@ -189,10 +189,12 @@ again:
        buffer_map = kmem_suballoc(clean_map, &kmi->buffer_sva,
            &kmi->buffer_eva, (long)nbuf * BKVASIZE, FALSE);
        buffer_map->system_map = 1;
-       bio_transient_map = kmem_suballoc(clean_map, &kmi->bio_transient_sva,
-           &kmi->bio_transient_eva, (long)bio_transient_maxcnt * MAXPHYS,
-           FALSE);
-       bio_transient_map->system_map = 1;
+       if (bio_transient_maxcnt != 0) {
+               bio_transient_map = kmem_suballoc(clean_map,
+                   &kmi->bio_transient_sva, &kmi->bio_transient_eva,
+                   (long)bio_transient_maxcnt * MAXPHYS, FALSE);
+               bio_transient_map->system_map = 1;
+       }
        pager_map = kmem_suballoc(clean_map, &kmi->pager_sva, &kmi->pager_eva,
            (long)nswbuf * MAXPHYS, FALSE);
        pager_map->system_map = 1;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to