Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/nfs/nfs_commonsubs.c
Show First 20 Lines • Show All 4,907 Lines • ▼ Show 20 Lines | nfsm_add_ext_pgs(struct mbuf *m, int maxextsiz, int *bextpg) | ||||
struct mbuf *mp; | struct mbuf *mp; | ||||
vm_page_t pg; | vm_page_t pg; | ||||
if ((m->m_epg_npgs + 1) * PAGE_SIZE > maxextsiz) { | if ((m->m_epg_npgs + 1) * PAGE_SIZE > maxextsiz) { | ||||
mp = mb_alloc_ext_plus_pages(PAGE_SIZE, M_WAITOK); | mp = mb_alloc_ext_plus_pages(PAGE_SIZE, M_WAITOK); | ||||
*bextpg = 0; | *bextpg = 0; | ||||
m->m_next = mp; | m->m_next = mp; | ||||
} else { | } else { | ||||
do { | pg = vm_page_alloc_noobj(VM_ALLOC_WAITOK | VM_ALLOC_NODUMP | | ||||
pg = vm_page_alloc(NULL, 0, VM_ALLOC_NORMAL | | |||||
VM_ALLOC_NOOBJ | VM_ALLOC_NODUMP | | |||||
VM_ALLOC_WIRED); | VM_ALLOC_WIRED); | ||||
if (pg == NULL) | |||||
vm_wait(NULL); | |||||
} while (pg == NULL); | |||||
m->m_epg_pa[m->m_epg_npgs] = VM_PAGE_TO_PHYS(pg); | m->m_epg_pa[m->m_epg_npgs] = VM_PAGE_TO_PHYS(pg); | ||||
*bextpg = m->m_epg_npgs; | *bextpg = m->m_epg_npgs; | ||||
m->m_epg_npgs++; | m->m_epg_npgs++; | ||||
m->m_epg_last_len = 0; | m->m_epg_last_len = 0; | ||||
mp = m; | mp = m; | ||||
} | } | ||||
return (mp); | return (mp); | ||||
} | } |