]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/vm/vnode_pager.c
xnu-4570.1.46.tar.gz
[apple/xnu.git] / bsd / vm / vnode_pager.c
index 45e338a5e136042726d7cf3c0ad326536e8b29ec..69dad298104bb6e094d20a828773cd35841e7097 100644 (file)
 
 #include <kern/assert.h>
 #include <sys/kdebug.h>
-#include <machine/spl.h>
-
 #include <nfs/rpcv2.h>
 #include <nfs/nfsproto.h>
 #include <nfs/nfs.h>
 
 #include <vm/vm_protos.h>
 
+#include <vfs/vfs_disk_conditioner.h>
 
 void
 vnode_pager_throttle()
@@ -93,13 +92,10 @@ vnode_pager_throttle()
                throttle_lowpri_io(1);
 }
 
-
 boolean_t
 vnode_pager_isSSD(vnode_t vp)
 {
-       if (vp->v_mount->mnt_kern_flag & MNTK_SSD)
-               return (TRUE);
-       return (FALSE);
+       return disk_conditioner_mount_is_ssd(vp->v_mount);
 }
 
 #if CONFIG_IOSCHED
@@ -251,7 +247,7 @@ u_int32_t vnode_trim (
                 * in each call to ensure that the entire range is covered.
                 */
                error = VNOP_BLOCKMAP (vp, current_offset, remaining_length, 
-                               &io_blockno, &io_bytecount, NULL, VNODE_READ, NULL);
+                               &io_blockno, &io_bytecount, NULL, VNODE_READ | VNODE_BLOCKMAP_NO_TRACK, NULL);
 
                if (error) {
                        goto trim_exit;
@@ -367,7 +363,7 @@ vnode_pageout(struct vnode *vp,
                else
                        request_flags = UPL_UBC_PAGEOUT | UPL_RET_ONLY_DIRTY;
                
-               if (ubc_create_upl(vp, f_offset, size, &upl, &pl, request_flags) != KERN_SUCCESS) {
+               if (ubc_create_upl_kernel(vp, f_offset, size, &upl, &pl, request_flags, VM_KERN_MEMORY_FILE) != KERN_SUCCESS) {
                        result    = PAGER_ERROR;
                        error_ret = EINVAL;
                        goto out;
@@ -601,7 +597,7 @@ vnode_pagein(
                        }
                        goto out;
                }
-               ubc_create_upl(vp, f_offset, size, &upl, &pl, UPL_UBC_PAGEIN | UPL_RET_ONLY_ABSENT);
+               ubc_create_upl_kernel(vp, f_offset, size, &upl, &pl, UPL_UBC_PAGEIN | UPL_RET_ONLY_ABSENT, VM_KERN_MEMORY_FILE);
 
                if (upl == (upl_t)NULL) {
                        result =  PAGER_ABSENT;
@@ -728,11 +724,9 @@ vnode_pagein(
                                        if(error == EAGAIN) {
                                                ubc_upl_abort_range(upl, (upl_offset_t) xoff, xsize, UPL_ABORT_FREE_ON_EMPTY | UPL_ABORT_RESTART);
                                        }
-#if CONFIG_PROTECT
                                        if(error == EPERM) {
                                                ubc_upl_abort_range(upl, (upl_offset_t) xoff, xsize, UPL_ABORT_FREE_ON_EMPTY | UPL_ABORT_ERROR);
                                        }
-#endif
                                }
                                result = PAGER_ERROR;
                                error  = PAGER_ERROR;
@@ -747,24 +741,6 @@ out:
        return (error);
 }
 
-void
-vnode_pager_shutdown(void)
-{
-       int i;
-       vnode_t vp;
-
-       for(i = 0; i < MAX_BACKING_STORE; i++) {
-               vp = (vnode_t)(bs_port_table[i]).vp;
-               if (vp) {
-                       (bs_port_table[i]).vp = 0;
-
-                       /* get rid of macx_swapon() reference */
-                       vnode_rele(vp);
-               }
-       }
-}
-
-
 void *
 upl_get_internal_page_list(upl_t upl)
 {