Lines 290-295
tmpfs_can_alloc_page(vm_object_t obj, vm_pindex_t pindex)
Link Here
|
290 |
if (tm == NULL || vm_pager_has_page(obj, pindex, NULL, NULL) || |
290 |
if (tm == NULL || vm_pager_has_page(obj, pindex, NULL, NULL) || |
291 |
tm->tm_pages_max == 0) |
291 |
tm->tm_pages_max == 0) |
292 |
return (true); |
292 |
return (true); |
|
|
293 |
if (tm->tm_pages_max == ULONG_MAX) |
294 |
return (tmpfs_mem_avail() >= 1); |
293 |
return (tm->tm_pages_max > atomic_load_long(&tm->tm_pages_used)); |
295 |
return (tm->tm_pages_max > atomic_load_long(&tm->tm_pages_used)); |
294 |
} |
296 |
} |
295 |
|
297 |
|
Lines 413-419
tmpfs_mem_avail(void)
Link Here
|
413 |
size_t avail; |
415 |
size_t avail; |
414 |
long reserved; |
416 |
long reserved; |
415 |
|
417 |
|
416 |
avail = swap_pager_avail + vm_free_count(); |
418 |
avail = swap_pager_avail / 2 + vm_free_avail(); |
|
|
419 |
//avail = swap_pager_avail + vm_free_count(); |
417 |
reserved = atomic_load_long(&tmpfs_pages_reserved); |
420 |
reserved = atomic_load_long(&tmpfs_pages_reserved); |
418 |
if (__predict_false(avail < reserved)) |
421 |
if (__predict_false(avail < reserved)) |
419 |
return (0); |
422 |
return (0); |
Lines 1862-1867
tmpfs_reg_resize(struct vnode *vp, off_t newsize, boolean_t ignerr)
Link Here
|
1862 |
if (newpages < oldpages) |
1865 |
if (newpages < oldpages) |
1863 |
vm_object_page_remove(uobj, newpages, 0, 0); |
1866 |
vm_object_page_remove(uobj, newpages, 0, 0); |
1864 |
} |
1867 |
} |
|
|
1868 |
#if 0 |
1869 |
if (newpages > oldpages) { |
1870 |
if (tmpfs_mem_avail() < newpages - oldpages) { |
1871 |
VM_OBJECT_WUNLOCK(uobj); |
1872 |
return (ENOSPC); |
1873 |
} |
1874 |
} |
1875 |
#endif |
1865 |
uobj->size = newpages; |
1876 |
uobj->size = newpages; |
1866 |
VM_OBJECT_WUNLOCK(uobj); |
1877 |
VM_OBJECT_WUNLOCK(uobj); |
1867 |
|
1878 |
|