View | Details | Raw Unified | Return to bug 275436 | Differences between
and this patch

Collapse All | Expand All

(-)b/sys/fs/tmpfs/tmpfs_subr.c (-1 / +12 lines)
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

Return to bug 275436