OS-6134: vn_reinit balks on zeroed vnodes


Issue Type:Bug
Priority:4 - Normal
Created at:2017-05-17T18:01:58.000Z
Updated at:2017-11-04T18:33:24.550Z


Created by:Former user
Reported by:Former user
Assigned to:Former user


Fixed: A fix for this issue is checked into the tree and tested.
(Resolution Date: 2017-05-18T15:36:56.000Z)

Fix Versions

2017-05-25 ROMANIAN STRIKE (Release Date: 2017-05-25)


On today's platform we're panicing early in boot with this:

SunOS Release 5.11 Version joyent_20170517T115838Z 64-bit
Copyright (c) 2010-2017, Joyent Inc. All rights reserved.

panic[cpu0]/thread=fffffffffbc386a0: assertion failed: vp->v_path != NULL, file:

Warning - stack not written to the dump buffer
fffffffffbc7acf0 fffffffffba7ab28 ()
fffffffffbc7ad20 genunix:vn_recycle+f8 ()
fffffffffbc7ad40 genunix:vn_reinit+7b ()
fffffffffbc7ad90 genunix:dnlc_init+17f ()
fffffffffbc7add0 genunix:main+b8 ()
fffffffffbc7ade0 unix:_locore_start+90 ()

skipping system dump - no dump device configured


Comment by Former user
Created at 2017-05-17T19:36:17.000Z
Updated at 2017-05-17T19:37:04.000Z

This is due to an interaction between the changes introduced in illumos#8064 and our v_path logic. In two cases (the dnlc and nfs4), vn_reinit() is used to initialize locally defined vnodes. This is a departure from the expected case where vnodes are sourced from vn_alloc() (where they are constructed to have an initialized v_path). As a result, the NULL v_path in those locally defined vnodes will raise an assertion in vn_recycle.

It seems like the simple path forward is to add a v_path == NULL check to vn_reinit(), keeping v_path manipulations abstracted from VFS consumers.

Comment by Former user
Created at 2017-05-17T19:39:10.000Z

illumos-joyent commit ff2d711 (branch master, by Patrick Mooney)

OS-6134 vn_reinit balks on zeroed vnodes
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Approved by: Jerry Jelinek <jerry.jelinek@joyent.com>