kern/73094: [unionfs] system runs out of vnodes

Irina Liakh spell at itl.ua
Sun Oct 24 15:00:47 PDT 2004


>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:


More information about the freebsd-bugs mailing list