route.8: Remove NS remains.
[dragonfly.git] / sys / kern / kern_xio.c
index f2bbe91..6697006 100644 (file)
@@ -177,8 +177,6 @@ xio_init_kbuf(xio_t xio, void *kbase, size_t kbytes)
     xio->xio_error = 0;
     if ((n = PAGE_SIZE - xio->xio_offset) > kbytes)
        n = kbytes;
-    lwkt_gettoken(&vm_token);
-    crit_enter();
     for (i = 0; n && i < XIO_INTERNAL_PAGES; ++i) {
        if ((paddr = pmap_kextract(addr)) == 0)
            break;
@@ -191,8 +189,6 @@ xio_init_kbuf(xio_t xio, void *kbase, size_t kbytes)
            n = PAGE_SIZE;
        addr += PAGE_SIZE;
     }
-    crit_exit();
-    lwkt_reltoken(&vm_token);
     xio->xio_npages = i;
 
     /*
@@ -223,14 +219,10 @@ xio_init_pages(xio_t xio, struct vm_page **mbase, int npages, int xflags)
     xio->xio_pages = xio->xio_internal_pages;
     xio->xio_npages = npages;
     xio->xio_error = 0;
-    lwkt_gettoken(&vm_token);
-    crit_enter();
     for (i = 0; i < npages; ++i) {
        vm_page_hold(mbase[i]);
        xio->xio_pages[i] = mbase[i];
     }
-    crit_exit();
-    lwkt_reltoken(&vm_token);
     return(0);
 }
 
@@ -244,16 +236,12 @@ xio_release(xio_t xio)
     int i;
     vm_page_t m;
 
-    lwkt_gettoken(&vm_token);
-    crit_enter();
     for (i = 0; i < xio->xio_npages; ++i) {
        m = xio->xio_pages[i];
        if (xio->xio_flags & XIOF_WRITE)
                vm_page_dirty(m);
        vm_page_unhold(m);
     }
-    crit_exit();
-    lwkt_reltoken(&vm_token);
     xio->xio_offset = 0;
     xio->xio_npages = 0;
     xio->xio_bytes = 0;
@@ -309,6 +297,7 @@ xio_copy_xtou(xio_t xio, int uoffset, void *uptr, int bytes)
     int offset;
     vm_page_t m;
     struct lwbuf *lwb;
+    struct lwbuf lwb_cache;
 
     if (uoffset + bytes > xio->xio_bytes)
        return(EFAULT);
@@ -323,7 +312,7 @@ xio_copy_xtou(xio_t xio, int uoffset, void *uptr, int bytes)
         ++i
     ) {
        m = xio->xio_pages[i];
-       lwb = lwbuf_alloc(m);
+       lwb = lwbuf_alloc(m, &lwb_cache);
        error = copyout((char *)lwbuf_kva(lwb) + offset, uptr, n);
        lwbuf_free(lwb);
        if (error)
@@ -357,6 +346,7 @@ xio_copy_xtok(xio_t xio, int uoffset, void *kptr, int bytes)
     int offset;
     vm_page_t m;
     struct lwbuf *lwb;
+    struct lwbuf lwb_cache;
 
     if (bytes + uoffset > xio->xio_bytes)
        return(EFAULT);
@@ -371,7 +361,7 @@ xio_copy_xtok(xio_t xio, int uoffset, void *kptr, int bytes)
         ++i
     ) {
        m = xio->xio_pages[i];
-       lwb = lwbuf_alloc(m);
+       lwb = lwbuf_alloc(m, &lwb_cache);
        bcopy((char *)lwbuf_kva(lwb) + offset, kptr, n);
        lwbuf_free(lwb);
        bytes -= n;
@@ -403,6 +393,7 @@ xio_copy_utox(xio_t xio, int uoffset, const void *uptr, int bytes)
     int offset;
     vm_page_t m;
     struct lwbuf *lwb;
+    struct lwbuf lwb_cache;
 
     if (uoffset + bytes > xio->xio_bytes)
        return(EFAULT);
@@ -417,7 +408,7 @@ xio_copy_utox(xio_t xio, int uoffset, const void *uptr, int bytes)
         ++i
     ) {
        m = xio->xio_pages[i];
-       lwb = lwbuf_alloc(m);
+       lwb = lwbuf_alloc(m, &lwb_cache);
        error = copyin(uptr, (char *)lwbuf_kva(lwb) + offset, n);
        lwbuf_free(lwb);
        if (error)
@@ -451,6 +442,7 @@ xio_copy_ktox(xio_t xio, int uoffset, const void *kptr, int bytes)
     int offset;
     vm_page_t m;
     struct lwbuf *lwb;
+    struct lwbuf lwb_cache;
 
     if (uoffset + bytes > xio->xio_bytes)
        return(EFAULT);
@@ -465,7 +457,7 @@ xio_copy_ktox(xio_t xio, int uoffset, const void *kptr, int bytes)
         ++i
     ) {
        m = xio->xio_pages[i];
-       lwb = lwbuf_alloc(m);
+       lwb = lwbuf_alloc(m, &lwb_cache);
        bcopy(kptr, (char *)lwbuf_kva(lwb) + offset, n);
        lwbuf_free(lwb);
        bytes -= n;