Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Aug 2009 21:46:55 +0000 (UTC)
From:      Stanislav Sedov <stas@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r196023 - projects/libprocstat/sys/kern
Message-ID:  <200908012146.n71LktZx093461@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: stas
Date: Sat Aug  1 21:46:55 2009
New Revision: 196023
URL: http://svn.freebsd.org/changeset/base/196023

Log:
  - Correctly retrieve fsid for vnodes that belong to filesystems
    not supporting these fields.

Modified:
  projects/libprocstat/sys/kern/kern_descrip.c

Modified: projects/libprocstat/sys/kern/kern_descrip.c
==============================================================================
--- projects/libprocstat/sys/kern/kern_descrip.c	Sat Aug  1 21:45:48 2009	(r196022)
+++ projects/libprocstat/sys/kern/kern_descrip.c	Sat Aug  1 21:46:55 2009	(r196023)
@@ -3193,6 +3193,8 @@ fill_vnode_info(struct vnode *vp, struct
 	/*
 	 * Retrieve vnode attributes.
 	 */
+	va.va_fsid = VNOVAL;
+	va.va_rdev = NODEV;
 	vfslocked = VFS_LOCK_GIANT(vp->v_mount);
 	vn_lock(vp, LK_SHARED | LK_RETRY);
 	error = VOP_GETATTR(vp, &va, curthread->td_ucred);
@@ -3200,7 +3202,11 @@ fill_vnode_info(struct vnode *vp, struct
 	VFS_UNLOCK_GIANT(vfslocked);
 	if (error != 0)
 		return (error);
-	kif->kf_un.kf_file.kf_file_fsid = va.va_fsid;
+	if (va.va_fsid != VNOVAL)
+		kif->kf_un.kf_file.kf_file_fsid = va.va_fsid;
+	else
+		kif->kf_un.kf_file.kf_file_fsid =
+		    vp->v_mount->mnt_stat.f_fsid.val[0];
 	kif->kf_un.kf_file.kf_file_fileid = va.va_fileid;
 	kif->kf_un.kf_file.kf_file_mode = MAKEIMODE(va.va_type, va.va_mode);
 	kif->kf_un.kf_file.kf_file_size = va.va_size;



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