Date: Mon, 25 Oct 2004 00:52:55 +0300 (EEST) From: Irina Liakh <spell@itl.ua> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/73094: [unionfs] system runs out of vnodes Message-ID: <20041024215255.9FCE721565@mermaid.itl.net.ua> Resent-Message-ID: <200410242200.i9OM0jDm066200@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 73094 >Category: kern >Synopsis: [unionfs] system runs out of vnodes >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Oct 24 22:00:44 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Irina Liakh >Release: FreeBSD 5.3-BETA6 amd64 >Organization: ITL >Environment: FreeBSD 5.3-BETA6 amd64, unionfs >Description: While using unionfs file system, it is possible to run out of vnodes and get still working machine, but every process that needs allocating vnode sleeps waiting for free vnode, so machine runs into rather unusable state. In normal situation, when vnode count is going to be over, getnewvnode() routine tries to reuse (by vtryrecycle()) existing but freed vnodes, and numvnodes (sysctl vfs.numvnodes) stops growing. When using unionfs (accessing files in it), vtryrecycle() always fails. The reason is non-zero resident_page_count field in vm_object_t-object corresponding to vnode-to-be-reused. Hence, getnewvnode() allocates new vnodes until numvnodes minus freevnodes becomes greater than desiredvnodes, after what every getnewvnode() goes to sleep with status-for-ps "vlruwk". >How-To-Repeat: Mount unionfs file system by mount_unionfs (regardless of -b and -r options) with great files count and directory tree (ports tree almost always will suffice). Run 'find <mount_point>' command. >Fix: Unknown. >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041024215255.9FCE721565>