From d09bec00987a11e098464964dcf3588f32dc7738 Mon Sep 17 00:00:00 2001 From: phk Date: Wed, 10 Nov 2004 07:25:37 +0000 Subject: Pick up the inode number using VOP_GETATTR() rather than caching it in all vnodes on the off chance that linprocfs needs it. If we can afford to call vn_fullpath() we can afford the much cheaper VOP_GETATTR(). --- sys/compat/linprocfs/linprocfs.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'sys/compat/linprocfs') diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index 040c649..95cebb4 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -830,6 +830,8 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) ino_t ino; int ref_count, shadow_count, flags; int error; + struct vnode *vp; + struct vattr vat; PROC_LOCK(p); error = p_candebug(td, p); @@ -858,13 +860,13 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) lobj = tobj; ino = 0; if (lobj) { + vp = lobj->handle; VM_OBJECT_LOCK(lobj); off = IDX_TO_OFF(lobj->size); if (lobj->type == OBJT_VNODE && lobj->handle) { - vn_fullpath(td, (struct vnode *)lobj->handle, - &name, &freename); - ino = ((struct vnode *) - lobj->handle)->v_cachedid; + vn_fullpath(td, vp, &name, &freename); + VOP_GETATTR(vp, &vat, td->td_ucred, td); + ino = vat.va_fileid; } flags = obj->flags; ref_count = obj->ref_count; -- cgit v1.1