Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Jan 2015 09:07:23 -0600
From:      Eric Badger <eric@badgerio.us>
To:        freebsd-current@freebsd.org
Subject:   Filepaths in VM map for tmpfs files
Message-ID:  <54CCEFAB.9040406@badgerio.us>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------010102060709010900020003
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

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



--------------010102060709010900020003
Content-Type: text/x-patch;
 name="tmpfs_vnode.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="tmpfs_vnode.diff"

Index: sys/kern/kern_proc.c
===================================================================
--- sys/kern/kern_proc.c	(revision 277957)
+++ sys/kern/kern_proc.c	(working copy)
@@ -2337,6 +2337,11 @@
 				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;

--------------010102060709010900020003--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54CCEFAB.9040406>