summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_radix.h
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2013-08-23 17:27:12 +0000
committeralc <alc@FreeBSD.org>2013-08-23 17:27:12 +0000
commit1a535523cd7d4a25cbdb68b60e29942c9f7afef3 (patch)
treeb3d35fed9a216baba77d1d4ee4e085d1772299e9 /sys/vm/vm_radix.h
parente9e439afa64e6d870aca90618c2201791001ca4c (diff)
downloadFreeBSD-src-1a535523cd7d4a25cbdb68b60e29942c9f7afef3.zip
FreeBSD-src-1a535523cd7d4a25cbdb68b60e29942c9f7afef3.tar.gz
Addendum to r254141: The call to vm_radix_insert() in vm_page_cache() can
reclaim the last preexisting cached page in the object, resulting in a call to vdrop(). Detect this scenario so that the vnode's hold count is correctly maintained. Otherwise, we panic. Reported by: scottl Tested by: pho Discussed with: attilio, jeff, kib
Diffstat (limited to 'sys/vm/vm_radix.h')
-rw-r--r--sys/vm/vm_radix.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/vm/vm_radix.h b/sys/vm/vm_radix.h
index 73c9cc1..4491860 100644
--- a/sys/vm/vm_radix.h
+++ b/sys/vm/vm_radix.h
@@ -37,6 +37,7 @@
void vm_radix_init(void);
int vm_radix_insert(struct vm_radix *rtree, vm_page_t page);
+boolean_t vm_radix_is_singleton(struct vm_radix *rtree);
vm_page_t vm_radix_lookup(struct vm_radix *rtree, vm_pindex_t index);
vm_page_t vm_radix_lookup_ge(struct vm_radix *rtree, vm_pindex_t index);
vm_page_t vm_radix_lookup_le(struct vm_radix *rtree, vm_pindex_t index);
OpenPOWER on IntegriCloud