summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1999-07-02 16:29:47 +0000
committerphk <phk@FreeBSD.org>1999-07-02 16:29:47 +0000
commitb6d067fe706d7df16489c3e6138e2c68c483bd7c (patch)
tree6dd5d101ce37a738d8b0f531e7273f744862ab5d /sys
parent60d229e604f6fdbe9921b44b59b82b2469286d78 (diff)
downloadFreeBSD-src-b6d067fe706d7df16489c3e6138e2c68c483bd7c.zip
FreeBSD-src-b6d067fe706d7df16489c3e6138e2c68c483bd7c.tar.gz
Make sure that stat(2) and friends always return a valid st_dev field.
Pseudo-FS need not fill in the va_fsid anymore, the syscall code will use the first half of the fsid, which now looks like a udev_t with major 255.
Diffstat (limited to 'sys')
-rw-r--r--sys/fs/fdescfs/fdesc_vnops.c3
-rw-r--r--sys/fs/nullfs/null_vnops.c6
-rw-r--r--sys/fs/portalfs/portal_vnops.c3
-rw-r--r--sys/fs/umapfs/umap_vnops.c4
-rw-r--r--sys/fs/unionfs/union_vnops.c3
-rw-r--r--sys/kern/vfs_export.c9
-rw-r--r--sys/kern/vfs_subr.c9
-rw-r--r--sys/kern/vfs_vnops.c7
-rw-r--r--sys/miscfs/fdesc/fdesc_vnops.c3
-rw-r--r--sys/miscfs/kernfs/kernfs_vnops.c3
-rw-r--r--sys/miscfs/nullfs/null_vnops.c6
-rw-r--r--sys/miscfs/portal/portal_vnops.c3
-rw-r--r--sys/miscfs/umapfs/umap_vnops.c4
-rw-r--r--sys/miscfs/union/union_vnops.c3
14 files changed, 28 insertions, 38 deletions
diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c
index 2d7dc39..bc0cb5b 100644
--- a/sys/fs/fdescfs/fdesc_vnops.c
+++ b/sys/fs/fdescfs/fdesc_vnops.c
@@ -35,7 +35,7 @@
*
* @(#)fdesc_vnops.c 8.9 (Berkeley) 1/21/94
*
- * $Id: fdesc_vnops.c,v 1.41 1999/01/27 22:42:06 dillon Exp $
+ * $Id: fdesc_vnops.c,v 1.42 1999/05/31 11:27:49 phk Exp $
*/
/*
@@ -460,7 +460,6 @@ fdesc_getattr(ap)
}
vap->va_uid = 0;
vap->va_gid = 0;
- vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];
vap->va_blocksize = DEV_BSIZE;
vap->va_atime.tv_sec = boottime.tv_sec;
vap->va_atime.tv_nsec = 0;
diff --git a/sys/fs/nullfs/null_vnops.c b/sys/fs/nullfs/null_vnops.c
index fdcdc38..638b9ed 100644
--- a/sys/fs/nullfs/null_vnops.c
+++ b/sys/fs/nullfs/null_vnops.c
@@ -37,11 +37,11 @@
*
* Ancestors:
* @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92
- * $Id: null_vnops.c,v 1.32 1999/01/28 00:57:50 dillon Exp $
+ * $Id: null_vnops.c,v 1.33 1999/06/16 23:27:38 mckusick Exp $
* ...and...
* @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project
*
- * $Id: null_vnops.c,v 1.32 1999/01/28 00:57:50 dillon Exp $
+ * $Id: null_vnops.c,v 1.33 1999/06/16 23:27:38 mckusick Exp $
*/
/*
@@ -452,8 +452,6 @@ null_getattr(ap)
if ((error = null_bypass((struct vop_generic_args *)ap)) != 0)
return (error);
- /* Requires that arguments be restored. */
- ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
return (0);
}
diff --git a/sys/fs/portalfs/portal_vnops.c b/sys/fs/portalfs/portal_vnops.c
index 819d636..ad96332 100644
--- a/sys/fs/portalfs/portal_vnops.c
+++ b/sys/fs/portalfs/portal_vnops.c
@@ -35,7 +35,7 @@
*
* @(#)portal_vnops.c 8.14 (Berkeley) 5/21/95
*
- * $Id: portal_vnops.c,v 1.34 1998/12/07 21:58:32 archie Exp $
+ * $Id: portal_vnops.c,v 1.35 1999/01/12 11:49:30 eivind Exp $
*/
/*
@@ -449,7 +449,6 @@ portal_getattr(ap)
vattr_null(vap);
vap->va_uid = 0;
vap->va_gid = 0;
- vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];
vap->va_size = DEV_BSIZE;
vap->va_blocksize = DEV_BSIZE;
nanotime(&vap->va_atime);
diff --git a/sys/fs/umapfs/umap_vnops.c b/sys/fs/umapfs/umap_vnops.c
index eff7841..ae47731 100644
--- a/sys/fs/umapfs/umap_vnops.c
+++ b/sys/fs/umapfs/umap_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)umap_vnops.c 8.6 (Berkeley) 5/22/95
- * $Id: umap_vnops.c,v 1.26 1998/12/07 21:58:34 archie Exp $
+ * $Id: umap_vnops.c,v 1.27 1999/06/16 23:27:41 mckusick Exp $
*/
/*
@@ -294,8 +294,6 @@ umap_getattr(ap)
error = umap_bypass((struct vop_generic_args *)ap);
if (error)
return (error);
- /* Requires that arguments be restored. */
- ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
/*
* Umap needs to map the uid and gid returned by a stat
diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c
index 6b9681c..25d2dfd 100644
--- a/sys/fs/unionfs/union_vnops.c
+++ b/sys/fs/unionfs/union_vnops.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)union_vnops.c 8.32 (Berkeley) 6/23/95
- * $Id: union_vnops.c,v 1.60 1999/01/27 22:42:08 dillon Exp $
+ * $Id: union_vnops.c,v 1.61 1999/06/16 23:27:43 mckusick Exp $
*/
#include <sys/param.h>
@@ -800,7 +800,6 @@ union_getattr(ap)
if ((vap != ap->a_vap) && (vap->va_type == VDIR))
ap->a_vap->va_nlink += vap->va_nlink;
- ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
return (0);
}
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c
index 579d214..8357241 100644
--- a/sys/kern/vfs_export.c
+++ b/sys/kern/vfs_export.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
- * $Id: vfs_subr.c,v 1.203 1999/06/26 02:46:10 mckusick Exp $
+ * $Id: vfs_subr.c,v 1.204 1999/07/01 13:21:41 peter Exp $
*/
/*
@@ -333,16 +333,17 @@ vfs_getnewfsid(mp)
simple_lock(&mntid_slock);
mtype = mp->mnt_vfc->vfc_typenum;
- mp->mnt_stat.f_fsid.val[0] = (256 + mtype) * 256;
+ mp->mnt_stat.f_fsid.val[0] = umakedev(255, mtype);
mp->mnt_stat.f_fsid.val[1] = mtype;
if (xxxfs_mntid == 0)
++xxxfs_mntid;
- tfsid.val[0] = (256 + mtype) * 256 | xxxfs_mntid;
+ tfsid.val[0] = umakedev(255, mtype + (xxxfs_mntid << 16));
tfsid.val[1] = mtype;
if (mountlist.cqh_first != (void *)&mountlist) {
while (vfs_getvfs(&tfsid)) {
- tfsid.val[0]++;
xxxfs_mntid++;
+ tfsid.val[0] = umakedev(255,
+ mtype + (xxxfs_mntid << 16));
}
}
mp->mnt_stat.f_fsid.val[0] = tfsid.val[0];
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 579d214..8357241 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
- * $Id: vfs_subr.c,v 1.203 1999/06/26 02:46:10 mckusick Exp $
+ * $Id: vfs_subr.c,v 1.204 1999/07/01 13:21:41 peter Exp $
*/
/*
@@ -333,16 +333,17 @@ vfs_getnewfsid(mp)
simple_lock(&mntid_slock);
mtype = mp->mnt_vfc->vfc_typenum;
- mp->mnt_stat.f_fsid.val[0] = (256 + mtype) * 256;
+ mp->mnt_stat.f_fsid.val[0] = umakedev(255, mtype);
mp->mnt_stat.f_fsid.val[1] = mtype;
if (xxxfs_mntid == 0)
++xxxfs_mntid;
- tfsid.val[0] = (256 + mtype) * 256 | xxxfs_mntid;
+ tfsid.val[0] = umakedev(255, mtype + (xxxfs_mntid << 16));
tfsid.val[1] = mtype;
if (mountlist.cqh_first != (void *)&mountlist) {
while (vfs_getvfs(&tfsid)) {
- tfsid.val[0]++;
xxxfs_mntid++;
+ tfsid.val[0] = umakedev(255,
+ mtype + (xxxfs_mntid << 16));
}
}
mp->mnt_stat.f_fsid.val[0] = tfsid.val[0];
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 0300ba5..8a520d3 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_vnops.c 8.2 (Berkeley) 1/21/94
- * $Id: vfs_vnops.c,v 1.67 1999/04/27 11:16:27 phk Exp $
+ * $Id: vfs_vnops.c,v 1.68 1999/04/28 11:37:12 phk Exp $
*/
#include <sys/param.h>
@@ -378,7 +378,10 @@ vn_stat(vp, sb, p)
/*
* Copy from vattr table
*/
- sb->st_dev = vap->va_fsid;
+ if (vap->va_fsid != VNOVAL)
+ sb->st_dev = vap->va_fsid;
+ else
+ sb->st_dev = vp->v_mount->mnt_stat.f_fsid.val[0];
sb->st_ino = vap->va_fileid;
mode = vap->va_mode;
switch (vap->va_type) {
diff --git a/sys/miscfs/fdesc/fdesc_vnops.c b/sys/miscfs/fdesc/fdesc_vnops.c
index 2d7dc39..bc0cb5b 100644
--- a/sys/miscfs/fdesc/fdesc_vnops.c
+++ b/sys/miscfs/fdesc/fdesc_vnops.c
@@ -35,7 +35,7 @@
*
* @(#)fdesc_vnops.c 8.9 (Berkeley) 1/21/94
*
- * $Id: fdesc_vnops.c,v 1.41 1999/01/27 22:42:06 dillon Exp $
+ * $Id: fdesc_vnops.c,v 1.42 1999/05/31 11:27:49 phk Exp $
*/
/*
@@ -460,7 +460,6 @@ fdesc_getattr(ap)
}
vap->va_uid = 0;
vap->va_gid = 0;
- vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];
vap->va_blocksize = DEV_BSIZE;
vap->va_atime.tv_sec = boottime.tv_sec;
vap->va_atime.tv_nsec = 0;
diff --git a/sys/miscfs/kernfs/kernfs_vnops.c b/sys/miscfs/kernfs/kernfs_vnops.c
index f8ca759..cf5b8d7 100644
--- a/sys/miscfs/kernfs/kernfs_vnops.c
+++ b/sys/miscfs/kernfs/kernfs_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)kernfs_vnops.c 8.15 (Berkeley) 5/21/95
- * $Id: kernfs_vnops.c,v 1.37 1998/12/07 21:58:31 archie Exp $
+ * $Id: kernfs_vnops.c,v 1.38 1999/01/27 22:42:06 dillon Exp $
*/
/*
@@ -378,7 +378,6 @@ kernfs_getattr(ap)
vattr_null(vap);
vap->va_uid = 0;
vap->va_gid = 0;
- vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];
vap->va_size = 0;
vap->va_blocksize = DEV_BSIZE;
nanotime(&vap->va_atime);
diff --git a/sys/miscfs/nullfs/null_vnops.c b/sys/miscfs/nullfs/null_vnops.c
index fdcdc38..638b9ed 100644
--- a/sys/miscfs/nullfs/null_vnops.c
+++ b/sys/miscfs/nullfs/null_vnops.c
@@ -37,11 +37,11 @@
*
* Ancestors:
* @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92
- * $Id: null_vnops.c,v 1.32 1999/01/28 00:57:50 dillon Exp $
+ * $Id: null_vnops.c,v 1.33 1999/06/16 23:27:38 mckusick Exp $
* ...and...
* @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project
*
- * $Id: null_vnops.c,v 1.32 1999/01/28 00:57:50 dillon Exp $
+ * $Id: null_vnops.c,v 1.33 1999/06/16 23:27:38 mckusick Exp $
*/
/*
@@ -452,8 +452,6 @@ null_getattr(ap)
if ((error = null_bypass((struct vop_generic_args *)ap)) != 0)
return (error);
- /* Requires that arguments be restored. */
- ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
return (0);
}
diff --git a/sys/miscfs/portal/portal_vnops.c b/sys/miscfs/portal/portal_vnops.c
index 819d636..ad96332 100644
--- a/sys/miscfs/portal/portal_vnops.c
+++ b/sys/miscfs/portal/portal_vnops.c
@@ -35,7 +35,7 @@
*
* @(#)portal_vnops.c 8.14 (Berkeley) 5/21/95
*
- * $Id: portal_vnops.c,v 1.34 1998/12/07 21:58:32 archie Exp $
+ * $Id: portal_vnops.c,v 1.35 1999/01/12 11:49:30 eivind Exp $
*/
/*
@@ -449,7 +449,6 @@ portal_getattr(ap)
vattr_null(vap);
vap->va_uid = 0;
vap->va_gid = 0;
- vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];
vap->va_size = DEV_BSIZE;
vap->va_blocksize = DEV_BSIZE;
nanotime(&vap->va_atime);
diff --git a/sys/miscfs/umapfs/umap_vnops.c b/sys/miscfs/umapfs/umap_vnops.c
index eff7841..ae47731 100644
--- a/sys/miscfs/umapfs/umap_vnops.c
+++ b/sys/miscfs/umapfs/umap_vnops.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* @(#)umap_vnops.c 8.6 (Berkeley) 5/22/95
- * $Id: umap_vnops.c,v 1.26 1998/12/07 21:58:34 archie Exp $
+ * $Id: umap_vnops.c,v 1.27 1999/06/16 23:27:41 mckusick Exp $
*/
/*
@@ -294,8 +294,6 @@ umap_getattr(ap)
error = umap_bypass((struct vop_generic_args *)ap);
if (error)
return (error);
- /* Requires that arguments be restored. */
- ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
/*
* Umap needs to map the uid and gid returned by a stat
diff --git a/sys/miscfs/union/union_vnops.c b/sys/miscfs/union/union_vnops.c
index 6b9681c..25d2dfd 100644
--- a/sys/miscfs/union/union_vnops.c
+++ b/sys/miscfs/union/union_vnops.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)union_vnops.c 8.32 (Berkeley) 6/23/95
- * $Id: union_vnops.c,v 1.60 1999/01/27 22:42:08 dillon Exp $
+ * $Id: union_vnops.c,v 1.61 1999/06/16 23:27:43 mckusick Exp $
*/
#include <sys/param.h>
@@ -800,7 +800,6 @@ union_getattr(ap)
if ((vap != ap->a_vap) && (vap->va_type == VDIR))
ap->a_vap->va_nlink += vap->va_nlink;
- ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
return (0);
}
OpenPOWER on IntegriCloud