Index: kern/kern_descrip.c =================================================================== --- kern/kern_descrip.c (revision 194478) +++ kern/kern_descrip.c (working copy) @@ -2887,6 +2887,7 @@ export_vnode_for_sysctl(struct vnode *vp, int type, struct kinfo_file *kif, struct filedesc *fdp, struct sysctl_req *req) { + struct vattr va; int error; char *fullpath, *freepath; int vfslocked; @@ -2913,7 +2914,17 @@ freepath = NULL; fullpath = "-"; FILEDESC_SUNLOCK(fdp); + VOP_GETATTR(vp, &va, NULL); +/* if (va.va_fsid != VNOVAL)*/ + kif->kf_fsid = va.va_fsid; +/* else + kif->kf_fsid = (long)vp->v_mount->mnt_stat.f_fsid.val[0];*/ + kif->kf_fileid = va.va_fileid; + kif->kf_mode = MAKEIMODE(va.va_type, va.va_mode); + kif->kf_size = va.va_size; + kif->kf_rdev = va.va_rdev; vn_fullpath(curthread, vp, &fullpath, &freepath); + vfslocked = VFS_LOCK_GIANT(vp->v_mount); vrele(vp); VFS_UNLOCK_GIANT(vfslocked); @@ -2940,6 +2951,7 @@ struct filedesc *fdp; int error, i, *name; struct socket *so; + struct vattr va; struct vnode *vp; struct file *fp; struct proc *p; @@ -3087,6 +3099,16 @@ freepath = NULL; fullpath = "-"; FILEDESC_SUNLOCK(fdp); + VOP_GETATTR(vp, &va, NULL); +// if (va.va_fsid != VNOVAL) + kif->kf_fsid = va.va_fsid; + /* else + kif->kf_fsid = (long) + vp->v_mount->mnt_stat.f_fsid.val[0];*/ + kif->kf_fileid = va.va_fileid; + kif->kf_mode = MAKEIMODE(va.va_type, va.va_mode); + kif->kf_size = va.va_size; + kif->kf_rdev = va.va_rdev; vn_fullpath(curthread, vp, &fullpath, &freepath); vfslocked = VFS_LOCK_GIANT(vp->v_mount); vrele(vp); Index: sys/user.h =================================================================== --- sys/user.h (revision 194478) +++ sys/user.h (working copy) @@ -307,7 +307,7 @@ }; #if defined(__amd64__) || defined(__i386__) -#define KINFO_FILE_SIZE 1392 +#define KINFO_FILE_SIZE 1412 #endif struct kinfo_file { @@ -324,6 +324,11 @@ int kf_sock_protocol; /* Socket protocol. */ struct sockaddr_storage kf_sa_local; /* Socket address. */ struct sockaddr_storage kf_sa_peer; /* Peer address. */ + long kf_fsid; /* Vnode filesystem id. */ + long kf_fileid; /* Global file id. */ + mode_t kf_mode; /* File mode. */ + u_long kf_size; /* File size. */ + dev_t kf_rdev; /* File device. */ int _kf_ispare[16]; /* Space for more stuff. */ /* Truncated before copyout in sysctl */ char kf_path[PATH_MAX]; /* Path to file, if any. */