diff options
| author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2007-04-22 21:16:15 +0000 |
|---|---|---|
| committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2007-04-22 21:16:15 +0000 |
| commit | 77128a226d9643934bc5e01a48af4858be7dc789 (patch) | |
| tree | c1b7897b40becde88b142cd33457601c8a5ccfa0 /sys | |
| parent | 1b4a4386aafea61317d6fe9181932da82e67d5d9 (diff) | |
Notes
Diffstat (limited to 'sys')
4 files changed, 18 insertions, 4 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 7af6b20c6ff1..16afa9c50c77 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 58dede895216..966f5030f176 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))); } /* diff --git a/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c b/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c index 7af6b20c6ff1..16afa9c50c77 100644 --- a/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c +++ b/sys/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/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c b/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c index 58dede895216..966f5030f176 100644 --- a/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c +++ b/sys/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))); } /* |
