summaryrefslogtreecommitdiffstats
path: root/sys/cddl
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2007-04-22 21:16:15 +0000
committerpjd <pjd@FreeBSD.org>2007-04-22 21:16:15 +0000
commit6af3e597936be3c34972fd161387a7f922dd340a (patch)
treec1b7897b40becde88b142cd33457601c8a5ccfa0 /sys/cddl
parent5b7440b907abb428511879d922a4dac4ce5cf70b (diff)
downloadFreeBSD-src-6af3e597936be3c34972fd161387a7f922dd340a.zip
FreeBSD-src-6af3e597936be3c34972fd161387a7f922dd340a.tar.gz
Fix st_rdev handling (implement it, actually).
Reported by: gj
Diffstat (limited to 'sys/cddl')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c1
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c10
2 files changed, 9 insertions, 2 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
index 7af6b20..16afa9c 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
@@ -1934,6 +1934,7 @@ zfs_getattr(ap)
vap->va_nlink = MIN(pzp->zp_links, UINT32_MAX); /* nlink_t limit! */
vap->va_size = pzp->zp_size;
vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0];
+ vap->va_rdev = zfs_cmpldev(pzp->zp_rdev);
vap->va_seq = zp->z_seq;
vap->va_flags = 0; /* FreeBSD: Reset chflags(2) flags. */
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
index 58dede8..966f503 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
@@ -271,6 +271,12 @@ zfs_init_fs(zfsvfs_t *zfsvfs, znode_t **zpp, cred_t *cr)
#ifndef MAXMIN64
#define MAXMIN64 0xffffffffUL
#endif
+#ifndef major
+#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */
+#endif
+#ifndef minor
+#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */
+#endif
/*
* Create special expldev for ZFS private use.
@@ -283,7 +289,7 @@ zfs_init_fs(zfsvfs_t *zfsvfs, znode_t **zpp, cred_t *cr)
static uint64_t
zfs_expldev(dev_t dev)
{
- return ((uint64_t)0);
+ return (((uint64_t)major(dev) << NBITSMINOR64) | minor(dev));
}
/*
* Special cmpldev for ZFS private use.
@@ -295,7 +301,7 @@ zfs_expldev(dev_t dev)
dev_t
zfs_cmpldev(uint64_t dev)
{
- return ((dev_t)0);
+ return (makedev((dev >> NBITSMINOR64), (dev & MAXMIN64)));
}
/*
OpenPOWER on IntegriCloud