getnewvnode() return code
Antonio Huete Jimenez <[email protected]>
| Newsgroups | gmane.os.dragonfly-bsd.kernel |
|---|---|
| Message-ID | <CACegU+vKDvQwXRXgBuUGQxjcZLjd2ObRY_rtUp4PAwTUaYycvA@mail.gmail.com> |
Hi, As far as I can see, getnewvnode() always returns 0. However the path to get a new vnode, which is: objcache_get() <- sysref_alloc() <- allovnode() <- getnewvnode() may return NULL via objcache_get. Filesystems like NFS for example use vx_put() on the vnode obtained via getnewvnode() in its nfsnode allocation path. In the case the returned vnode pointer was NULL that would cause a kernel panic. All filesystems check the return code from getnewvnode() but they don't check whether the returned vnode is NULL. In any case, I could be missing something; thoughts are appreciated. Cheers, Antonio Huete