Re: Filepaths in VM map for tmpfs files

From: Konstantin Belousov <kostikbel_at_gmail.com>
Date: Sat, 31 Jan 2015 17:36:21 +0200
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