On Sat, Jan 31, 2015 at 09:07:23AM -0600, Eric Badger wrote: > In FreeBSD 9, examining the VM map of a process (with e.g. 'procstat > -v') with a tmpfs file mapped showed a VNODE type and displayed the file > path. In 10.0 up to CURRENT (I believe this started at r250030), instead > SWAP is shown without a filepath. > > This has some unfortunate consequences; I discovered this problem when > trying to use dtrace's pid provider, which fails to find symbols for > executables running from tmpfs. > > I've attached a patch which will repair procstat/dtrace. There are a few > other places such a patch would be needed. I'm willing to put together > such a patch, but would like to first hear some feedback that this seems > like a reasonable approach, or if there's anything I've missed. > > Thoughts? > > Eric > > > Index: sys/kern/kern_proc.c > =================================================================== > --- sys/kern/kern_proc.c (revision 277957) > +++ sys/kern/kern_proc.c (working copy) > _at__at_ -2337,6 +2337,11 _at__at_ > break; > case OBJT_SWAP: > kve->kve_type = KVME_TYPE_SWAP; > + if ((lobj->flags & OBJ_TMPFS) != 0) > + { > + vp = lobj->un_pager.swp.swp_tmpfs; > + vref(vp); > + } > break; > case OBJT_DEVICE: > kve->kve_type = KVME_TYPE_DEVICE; First, shouldn't the kve_type changed to KVME_TYPE_VNODE as well ? Second, note that it is possible that the vnode is recycled, so OBJ_TMPFS flag is cleared for tmpfs swap object. The OBJ_TMPFS_NODE flag is still set then. I am not sure what to do in this case, should the type changed to KVME_TYPE_VNODE still, but kve_vn_* fields left invalid ?Received on Sat Jan 31 2015 - 14:36:32 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:55 UTC