Hi.

Some time ago I found:

        /*
         * MacOS X will fill in the 4-bit object type here.
         */
        value = ZFS_DIRENT_MAKE(0, zp->z_id);
and:
        objnum = ZFS_DIRENT_OBJ(zap.za_first_integer);
        /*
         * MacOS X can extract the object type here such as:
         * uint8_t type = ZFS_DIRENT_TYPE(zap.za_first_integer);
         */

so I started to use it. The thing is that it broke some functionality.
For example 'zpool status -v' doesn't show file names anymore.

I tracked it down to the zap_value_search() function and changing:

        if (za->za_first_integer == value) {
into:
        if (ZFS_DIRENT_OBJ(za->za_first_integer) == value) {

seems to fix it. Is this change ok or did I missue 'type' part of
za_first_integer field?

What I did was bascially:

        /*
         * MacOS X will fill in the 4-bit object type here.
         */
        value = ZFS_DIRENT_MAKE(IFTODT(zp->z_phys->zp_mode), zp->z_id);
and:
        objnum = ZFS_DIRENT_OBJ(zap.za_first_integer);
        /*
         * MacOS X can extract the object type here such as:
         * uint8_t type = ZFS_DIRENT_TYPE(zap.za_first_integer);
         */
        type = ZFS_DIRENT_TYPE(zap.za_first_integer);

Should I clear 'type' somewhere maybe or is my change to
zap_value_search() correct? If the latter, can someone verify other uses
of za_first_integer?

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd at FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/zfs-code/attachments/20070422/0f1ccb9e/attachment.bin>

Reply via email to