diff options
author | pjd <pjd@FreeBSD.org> | 2007-04-22 21:16:15 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2007-04-22 21:16:15 +0000 |
commit | 6af3e597936be3c34972fd161387a7f922dd340a (patch) | |
tree | c1b7897b40becde88b142cd33457601c8a5ccfa0 /sys/cddl | |
parent | 5b7440b907abb428511879d922a4dac4ce5cf70b (diff) | |
download | FreeBSD-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.c | 1 | ||||
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c | 10 |
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))); } /* |