Lines Matching refs:ab

78 attrlist_pack_fixed(struct _attrlist_buf *ab, void *source, ssize_t count)
83 fit = imin(count, ab->allocated - (ab->fixedcursor - ab->base));
85 bcopy(source, ab->fixedcursor, fit);
88 ab->fixedcursor += roundup(count, 4);
91 attrlist_pack_variable2(struct _attrlist_buf *ab, const void *source, ssize_t count, const void *ext, ssize_t extcount)
97 ar.attr_dataoffset = ab->varcursor - ab->fixedcursor;
99 attrlist_pack_fixed(ab, &ar, sizeof(ar));
102 fit = imin(count, ab->allocated - (ab->varcursor - ab->base));
105 bcopy(source, ab->varcursor, fit);
106 ab->varcursor += fit;
108 fit = imin(extcount, ab->allocated - (ab->varcursor - ab->base));
111 bcopy(ext, ab->varcursor, fit);
112 ab->varcursor += fit;
115 ab->varcursor = (char *)roundup((uintptr_t)ab->varcursor, 4);
118 attrlist_pack_variable(struct _attrlist_buf *ab, const void *source, ssize_t count)
120 attrlist_pack_variable2(ab, source, count, NULL, 0);
123 attrlist_pack_string(struct _attrlist_buf *ab, const char *source, ssize_t count)
144 ar.attr_dataoffset = ab->varcursor - ab->fixedcursor;
146 attrlist_pack_fixed(ab, &ar, sizeof(ar));
149 space = ab->allocated - (ab->varcursor - ab->base);
152 bcopy(source, ab->varcursor, fit);
155 ab->varcursor[fit] = '\0';
158 ab->varcursor += roundup(count + 1, 4);
644 struct _attrlist_buf ab;
654 ab.base = NULL;
672 bcopy(&alp->commonattr, &ab.valid, sizeof (attribute_set_t));
784 getvolattrlist_fixupattrs(&ab.valid, &vs);
869 ab.allocated = imin(uap->bufferSize, fixedsize + varsize);
870 if (ab.allocated > ATTR_MAX_BUFFER) {
872 VFS_DEBUG(ctx, vp, "ATTRLIST - ERROR: buffer size too large (%d limit %d)", ab.allocated, ATTR_MAX_BUFFER);
875 MALLOC(ab.base, char *, ab.allocated, M_TEMP, M_WAITOK);
876 if (ab.base == NULL) {
878 VFS_DEBUG(ctx, vp, "ATTRLIST - ERROR: could not allocate %d for copy buffer", ab.allocated);
885 ab.fixedcursor = ab.base + sizeof(uint32_t);
887 ab.fixedcursor += sizeof (attribute_set_t);
888 bzero(&ab.actual, sizeof (ab.actual));
890 ab.varcursor = ab.base + fixedsize;
891 ab.needed = fixedsize + varsize;
895 attrlist_pack_string(&ab, cnp, cnl);
896 ab.actual.commonattr |= ATTR_CMN_NAME;
899 ATTR_PACK4(ab, mnt->mnt_vfsstat.f_fsid.val[0]);
900 ab.actual.commonattr |= ATTR_CMN_DEVID;
903 ATTR_PACK8(ab, mnt->mnt_vfsstat.f_fsid);
904 ab.actual.commonattr |= ATTR_CMN_FSID;
908 ATTR_PACK4(ab, 0);
911 ATTR_PACK4(ab, vp->v_tag);
912 ab.actual.commonattr |= ATTR_CMN_OBJTAG;
917 ATTR_PACK8(ab, f);
923 ATTR_PACK8(ab, f);
929 ATTR_PACK8(ab, f);
934 ATTR_PACK4(ab, va.va_encoding);
935 ab.actual.commonattr |= ATTR_CMN_SCRIPT;
938 ATTR_PACK_TIME(ab, vs.f_create_time, is_64bit);
939 ab.actual.commonattr |= ATTR_CMN_CRTIME;
942 ATTR_PACK_TIME(ab, vs.f_modify_time, is_64bit);
943 ab.actual.commonattr |= ATTR_CMN_MODTIME;
947 ATTR_PACK_TIME(ab, vs.f_modify_time, is_64bit);
950 ATTR_PACK_TIME(ab, vs.f_access_time, is_64bit);
951 ab.actual.commonattr |= ATTR_CMN_ACCTIME;
954 ATTR_PACK_TIME(ab, vs.f_backup_time, is_64bit);
955 ab.actual.commonattr |= ATTR_CMN_BKUPTIME;
965 attrlist_pack_fixed(&ab, f, sizeof(f));
966 ab.actual.commonattr |= ATTR_CMN_FNDRINFO;
973 attrlist_pack_fixed(&ab, f, sizeof(f));
977 ATTR_PACK4(ab, va.va_uid);
978 ab.actual.commonattr |= ATTR_CMN_OWNERID;
981 ATTR_PACK4(ab, va.va_gid);
982 ab.actual.commonattr |= ATTR_CMN_GRPID;
985 ATTR_PACK_CAST(&ab, uint32_t, va.va_mode);
986 ab.actual.commonattr |= ATTR_CMN_ACCESSMASK;
989 ATTR_PACK4(ab, va.va_flags);
990 ab.actual.commonattr |= ATTR_CMN_FLAGS;
1027 ATTR_PACK4(ab, perms);
1028 ab.actual.commonattr |= ATTR_CMN_USERACCESS;
1038 attrlist_pack_variable(&ab, NULL, 0);
1040 ATTR_PACK(&ab, kauth_null_guid);
1042 ATTR_PACK(&ab, kauth_null_guid);
1044 ATTR_PACK8(ab, fid);
1046 ATTR_PACK8(ab, fid);
1052 ATTR_PACK_CAST(&ab, uint32_t, vfs_typenum(mnt));
1053 ab.actual.volattr |= ATTR_VOL_FSTYPE;
1056 ATTR_PACK_CAST(&ab, uint32_t, vs.f_signature);
1057 ab.actual.volattr |= ATTR_VOL_SIGNATURE;
1060 ATTR_PACK_CAST(&ab, off_t, vs.f_bsize * vs.f_blocks);
1061 ab.actual.volattr |= ATTR_VOL_SIZE;
1064 ATTR_PACK_CAST(&ab, off_t, vs.f_bsize * vs.f_bfree);
1065 ab.actual.volattr |= ATTR_VOL_SPACEFREE;
1068 ATTR_PACK_CAST(&ab, off_t, vs.f_bsize * vs.f_bavail);
1069 ab.actual.volattr |= ATTR_VOL_SPACEAVAIL;
1072 ATTR_PACK_CAST(&ab, off_t, vs.f_bsize);
1073 ab.actual.volattr |= ATTR_VOL_MINALLOCATION;
1076 ATTR_PACK_CAST(&ab, off_t, vs.f_bsize); /* not strictly true */
1077 ab.actual.volattr |= ATTR_VOL_ALLOCATIONCLUMP;
1080 ATTR_PACK_CAST(&ab, uint32_t, vs.f_iosize);
1081 ab.actual.volattr |= ATTR_VOL_IOBLOCKSIZE;
1084 ATTR_PACK_CAST(&ab, uint32_t, vs.f_objcount);
1085 ab.actual.volattr |= ATTR_VOL_OBJCOUNT;
1088 ATTR_PACK_CAST(&ab, uint32_t, vs.f_filecount);
1089 ab.actual.volattr |= ATTR_VOL_FILECOUNT;
1092 ATTR_PACK_CAST(&ab, uint32_t, vs.f_dircount);
1093 ab.actual.volattr |= ATTR_VOL_DIRCOUNT;
1096 ATTR_PACK_CAST(&ab, uint32_t, vs.f_maxobjcount);
1097 ab.actual.volattr |= ATTR_VOL_MAXOBJCOUNT;
1100 attrlist_pack_string(&ab, mnt->mnt_vfsstat.f_mntonname, 0);
1101 ab.actual.volattr |= ATTR_VOL_MOUNTPOINT;
1104 attrlist_pack_string(&ab, vs.f_vol_name, 0);
1105 ab.actual.volattr |= ATTR_VOL_NAME;
1108 ATTR_PACK_CAST(&ab, uint32_t, mnt->mnt_flag);
1109 ab.actual.volattr |= ATTR_VOL_MOUNTFLAGS;
1112 attrlist_pack_string(&ab, mnt->mnt_vfsstat.f_mntfromname, 0);
1113 ab.actual.volattr |= ATTR_VOL_MOUNTEDDEVICE;
1117 ATTR_PACK_CAST(&ab, uint64_t, ~0LL); /* return all encodings */
1127 ATTR_PACK(&ab, vs.f_capabilities);
1128 ab.actual.volattr |= ATTR_VOL_CAPABILITIES;
1131 ATTR_PACK(&ab, vs.f_uuid);
1132 ab.actual.volattr |= ATTR_VOL_UUID;
1148 ATTR_PACK(&ab, vs.f_attributes);
1149 ab.actual.volattr |= ATTR_VOL_ATTRIBUTES;
1153 if (!return_valid && (ab.fixedcursor - ab.base) != fixedsize)
1155 fixedsize, (long) (ab.fixedcursor - ab.base), alp->commonattr, alp->volattr);
1156 if (!return_valid && ab.varcursor != (ab.base + ab.needed))
1157 panic("packed variable field size mismatch; used %ld but expected %ld", (long) (ab.varcursor - ab.base), ab.needed);
1165 *(uint32_t *)ab.base = (uap->options & FSOPT_REPORT_FULLSIZE) ? ab.needed : imin(ab.allocated, ab.needed);
1169 ab.actual.commonattr |= ATTR_CMN_RETURNED_ATTRS;
1172 ab.actual.commonattr &= ab.valid.commonattr;
1173 ab.actual.volattr &= ab.valid.volattr;
1175 bcopy(&ab.actual, ab.base + sizeof(uint32_t), sizeof (ab.actual));
1177 error = copyout(ab.base, uap->attributeBuffer, ab.allocated);
1185 if (ab.base != NULL)
1186 FREE(ab.base, M_TEMP);
1200 struct _attrlist_buf ab;
1218 ab.base = NULL;
1271 bcopy(&al.commonattr, &ab.valid, sizeof (attribute_set_t));
1389 getattrlist_fixupattrs(&ab.valid, &va);
1485 ab.allocated = fixedsize + varsize;
1486 if (ab.allocated > ATTR_MAX_BUFFER) {
1488 VFS_DEBUG(ctx, vp, "ATTRLIST - ERROR: buffer size too large (%d limit %d)", ab.allocated, ATTR_MAX_BUFFER);
1491 MALLOC(ab.base, char *, ab.allocated, M_TEMP, M_WAITOK);
1492 if (ab.base == NULL) {
1494 VFS_DEBUG(ctx, vp, "ATTRLIST - ERROR: could not allocate %d for copy buffer", ab.allocated);
1531 ab.fixedcursor = ab.base + sizeof(uint32_t);
1533 ab.fixedcursor += sizeof (attribute_set_t);
1534 bzero(&ab.actual, sizeof (ab.actual));
1536 ab.varcursor = ab.base + fixedsize;
1537 ab.needed = ab.allocated;
1541 attrlist_pack_string(&ab, cnp, cnl);
1542 ab.actual.commonattr |= ATTR_CMN_NAME;
1545 ATTR_PACK4(ab, vp->v_mount->mnt_vfsstat.f_fsid.val[0]);
1546 ab.actual.commonattr |= ATTR_CMN_DEVID;
1549 ATTR_PACK8(ab, vp->v_mount->mnt_vfsstat.f_fsid);
1550 ab.actual.commonattr |= ATTR_CMN_FSID;
1553 ATTR_PACK4(ab, vtype);
1554 ab.actual.commonattr |= ATTR_CMN_OBJTYPE;
1557 ATTR_PACK4(ab, vp->v_tag);
1558 ab.actual.commonattr |= ATTR_CMN_OBJTAG;
1574 ATTR_PACK8(ab, f);
1575 ab.actual.commonattr |= ATTR_CMN_OBJID;
1591 ATTR_PACK8(ab, f);
1592 ab.actual.commonattr |= ATTR_CMN_OBJPERMANENTID;
1599 ATTR_PACK8(ab, f);
1600 ab.actual.commonattr |= ATTR_CMN_PAROBJID;
1604 ATTR_PACK4(ab, va.va_encoding);
1605 ab.actual.commonattr |= ATTR_CMN_SCRIPT;
1607 ATTR_PACK4(ab, 0x7e);
1611 ATTR_PACK_TIME(ab, va.va_create_time, proc_is64);
1612 ab.actual.commonattr |= ATTR_CMN_CRTIME;
1615 ATTR_PACK_TIME(ab, va.va_modify_time, proc_is64);
1616 ab.actual.commonattr |= ATTR_CMN_MODTIME;
1619 ATTR_PACK_TIME(ab, va.va_change_time, proc_is64);
1620 ab.actual.commonattr |= ATTR_CMN_CHGTIME;
1623 ATTR_PACK_TIME(ab, va.va_access_time, proc_is64);
1624 ab.actual.commonattr |= ATTR_CMN_ACCTIME;
1627 ATTR_PACK_TIME(ab, va.va_backup_time, proc_is64);
1628 ab.actual.commonattr |= ATTR_CMN_BKUPTIME;
1664 uio_addiov(auio, CAST_USER_ADDR_T(ab.fixedcursor), fisize);
1677 bzero(ab.fixedcursor, 32);
1681 ab.fixedcursor += 32;
1682 ab.actual.commonattr |= ATTR_CMN_FNDRINFO;
1689 ATTR_PACK4(ab, va.va_uid);
1690 ab.actual.commonattr |= ATTR_CMN_OWNERID;
1693 ATTR_PACK4(ab, va.va_gid);
1694 ab.actual.commonattr |= ATTR_CMN_GRPID;
1697 ATTR_PACK4(ab, va.va_mode);
1698 ab.actual.commonattr |= ATTR_CMN_ACCESSMASK;
1701 ATTR_PACK4(ab, va.va_flags);
1702 ab.actual.commonattr |= ATTR_CMN_FLAGS;
1723 ATTR_PACK4(ab, perms);
1724 ab.actual.commonattr |= ATTR_CMN_USERACCESS;
1735 attrlist_pack_variable2(&ab, &fsec, __offsetof(struct kauth_filesec, fsec_acl), va.va_acl, KAUTH_ACL_COPYSIZE(va.va_acl));
1736 ab.actual.commonattr |= ATTR_CMN_EXTENDED_SECURITY;
1738 attrlist_pack_variable(&ab, NULL, 0);
1743 ATTR_PACK(&ab, va.va_uuuid);
1744 ab.actual.commonattr |= ATTR_CMN_UUID;
1746 ATTR_PACK(&ab, kauth_null_guid);
1751 ATTR_PACK(&ab, va.va_guuid);
1752 ab.actual.commonattr |= ATTR_CMN_GRPUUID;
1754 ATTR_PACK(&ab, kauth_null_guid);
1758 ATTR_PACK8(ab, va.va_fileid);
1759 ab.actual.commonattr |= ATTR_CMN_FILEID;
1762 ATTR_PACK8(ab, va.va_parentid);
1763 ab.actual.commonattr |= ATTR_CMN_PARENTID;
1767 attrlist_pack_string (&ab, fullpathptr, fullpathlen);
1768 ab.actual.commonattr |= ATTR_CMN_FULLPATH;
1772 ATTR_PACK_TIME(ab, va.va_addedtime, proc_is64);
1773 ab.actual.commonattr |= ATTR_CMN_ADDEDTIME;
1779 ATTR_PACK4(ab, (uint32_t)va.va_dirlinkcount);
1780 ab.actual.dirattr |= ATTR_DIR_LINKCOUNT;
1783 ATTR_PACK4(ab, (uint32_t)va.va_nchildren);
1784 ab.actual.dirattr |= ATTR_DIR_ENTRYCOUNT;
1800 ATTR_PACK4(ab, mntstat);
1801 ab.actual.dirattr |= ATTR_DIR_MOUNTSTATUS;
1836 ATTR_PACK4(ab, (uint32_t)va.va_nlink);
1837 ab.actual.fileattr |= ATTR_FILE_LINKCOUNT;
1863 ATTR_PACK8(ab, totalsize);
1864 ab.actual.fileattr |= ATTR_FILE_TOTALSIZE;
1880 ATTR_PACK8(ab, totalalloc);
1881 ab.actual.fileattr |= ATTR_FILE_ALLOCSIZE;
1884 ATTR_PACK4(ab, va.va_iosize);
1885 ab.actual.fileattr |= ATTR_FILE_IOBLOCKSIZE;
1889 ATTR_PACK4(ab, 0); /* this value is deprecated */
1890 ab.actual.fileattr |= ATTR_FILE_CLUMPSIZE;
1904 ATTR_PACK4(ab, dev);
1905 ab.actual.fileattr |= ATTR_FILE_DEVTYPE;
1915 ATTR_PACK8(ab, va.va_data_size);
1917 ATTR_PACK8(ab, va.va_total_size);
1919 ab.actual.fileattr |= ATTR_FILE_DATALENGTH;
1923 ATTR_PACK8(ab, va.va_data_alloc);
1925 ATTR_PACK8(ab, va.va_total_alloc);
1927 ab.actual.fileattr |= ATTR_FILE_DATAALLOCSIZE;
1931 ATTR_PACK8(ab, rlength);
1932 ab.actual.fileattr |= ATTR_FILE_RSRCLENGTH;
1935 ATTR_PACK8(ab, ralloc);
1936 ab.actual.fileattr |= ATTR_FILE_RSRCALLOCSIZE;
1941 if (!return_valid && (ab.fixedcursor - ab.base) != fixedsize)
1943 fixedsize, (long) (ab.fixedcursor - ab.base), al.commonattr, al.volattr);
1944 if (!return_valid && ab.varcursor != (ab.base + ab.needed))
1945 panic("packed variable field size mismatch; used %ld but expected %ld", (long) (ab.varcursor - ab.base), ab.needed);
1953 *(uint32_t *)ab.base = (uap->options & FSOPT_REPORT_FULLSIZE) ? ab.needed : imin(ab.allocated, ab.needed);
1957 ab.actual.commonattr |= ATTR_CMN_RETURNED_ATTRS;
1960 ab.actual.commonattr &= ab.valid.commonattr;
1961 ab.actual.dirattr &= ab.valid.dirattr;
1962 ab.actual.fileattr &= ab.valid.fileattr;
1964 bcopy(&ab.actual, ab.base + sizeof(uint32_t), sizeof (ab.actual));
1968 error = copyout(ab.base, uap->attributeBuffer, imin(uap->bufferSize, ab.allocated));
1977 if (ab.base != NULL)
1978 FREE(ab.base, M_TEMP);