• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/bsd/hfs/

Lines Matching refs:hfsmp

83 static int  remove_attribute_records(struct hfsmount *hfsmp, BTreeIterator * iterator);
85 static int getnodecount(struct hfsmount *hfsmp, size_t nodesize);
89 static int read_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents);
91 static int write_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents);
93 static int alloc_attr_blks(struct hfsmount *hfsmp, size_t attrsize, size_t extentbufsize, HFSPlusExtentDescriptor *extents, int *blocks);
95 static void free_attr_blks(struct hfsmount *hfsmp, int blkcnt, HFSPlusExtentDescriptor *extents);
224 struct hfsmount *hfsmp;
286 hfsmp = VTOHFS(vp);
287 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE);
301 hfsmp = VTOHFS(vp);
305 if (hfsmp->hfs_flags & HFS_STANDARD) {
313 if ((hfsmp->hfs_attribute_vp == NULL) ||
318 btfile = VTOF(hfsmp->hfs_attribute_vp);
345 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
347 hfs_systemfile_unlock(hfsmp, lockflags);
427 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
444 hfs_systemfile_unlock(hfsmp, lockflags);
449 result = read_attr_data(hfsmp, uio, attrlen, extentbuf);
454 result = read_attr_data(hfsmp, uio, recp->forkData.theFork.logicalSize, recp->forkData.theFork.extents);
494 struct hfsmount *hfsmp;
513 hfsmp = VTOHFS(vp);
623 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE);
636 if (hfsmp->hfs_flags & HFS_STANDARD) {
650 hfsmp->hfs_max_inline_attrsize != 0 &&
651 attrsize < hfsmp->hfs_max_inline_attrsize) {
670 if (hfs_start_transaction(hfsmp) != 0) {
688 if (hfsmp->hfs_attribute_vp == NULL) {
689 result = hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
690 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
695 if (hfsmp->hfs_max_inline_attrsize == 0) {
696 hfsmp->hfs_max_inline_attrsize = getmaxinlineattrsize(hfsmp->hfs_attribute_vp);
700 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
715 btfile = VTOF(hfsmp->hfs_attribute_vp);
732 if (attrsize > hfsmp->hfs_max_inline_attrsize) {
740 if ((hfsmp->hfs_flags & HFS_XATTR_EXTENTS) == 0) {
746 blkcnt = howmany(attrsize, hfsmp->blockSize);
755 result = alloc_attr_blks(hfsmp, attrsize, extentbufsize, extentptr, &allocatedblks);
761 result = write_attr_data(hfsmp, uio, attrsize, extentptr);
770 result = remove_attribute_records(hfsmp, iterator);
833 result = remove_attribute_records(hfsmp, iterator);
873 hfs_systemfile_unlock(hfsmp, lockflags);
889 free_attr_blks(hfsmp, allocatedblks, extentptr);
891 hfs_end_transaction(hfsmp);
932 struct hfsmount *hfsmp;
940 hfsmp = VTOHFS(vp);
959 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE);
975 if ((result = hfs_start_transaction(hfsmp))) {
989 hfs_end_transaction(hfsmp);
1033 if (hfsmp->hfs_flags & HFS_STANDARD) {
1036 if (hfsmp->hfs_attribute_vp == NULL) {
1055 if (hfs_start_transaction(hfsmp) != 0) {
1059 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE | SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
1061 result = remove_attribute_records(hfsmp, iterator);
1063 hfs_systemfile_unlock(hfsmp, lockflags);
1068 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
1071 result = file_attribute_exist(hfsmp, cp->c_fileid);
1079 hfs_systemfile_unlock(hfsmp, lockflags);
1088 hfs_end_transaction(hfsmp);
1111 file_attribute_exist(struct hfsmount *hfsmp, uint32_t fileID)
1120 if (hfsmp->hfs_attribute_vp == NULL) {
1137 btfile = VTOF(hfsmp->hfs_attribute_vp);
1171 remove_attribute_records(struct hfsmount *hfsmp, BTreeIterator * iterator)
1179 btfile = VTOF(hfsmp->hfs_attribute_vp);
1211 free_attr_blks(hfsmp, extentblks, attrdata.forkData.theFork.extents);
1234 free_attr_blks(hfsmp, extentblks, attrdata.overflowExtents.extents);
1265 struct hfsmount *hfsmp;
1280 hfsmp = VTOHFS(vp);
1328 if (hfsmp->hfs_flags & HFS_STANDARD) {
1333 if ((hfsmp->hfs_attribute_vp == NULL) ||
1338 btfile = VTOF(hfsmp->hfs_attribute_vp);
1363 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
1367 hfs_systemfile_unlock(hfsmp, lockflags);
1381 hfs_systemfile_unlock(hfsmp, lockflags);
1462 hfs_removeallattr(struct hfsmount *hfsmp, u_int32_t fileid)
1469 if (hfsmp->hfs_attribute_vp == NULL) {
1472 btfile = VTOF(hfsmp->hfs_attribute_vp);
1480 if (hfs_start_transaction(hfsmp) != 0) {
1486 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE | SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
1494 hfs_systemfile_unlock(hfsmp, lockflags);
1495 hfs_end_transaction(hfsmp);
1498 result = remove_attribute_records(hfsmp, iterator);
1505 hfs_systemfile_unlock(hfsmp, lockflags);
1506 hfs_end_transaction(hfsmp);
1517 hfs_xattr_init(struct hfsmount * hfsmp)
1522 if (!(hfsmp->hfs_flags & HFS_STANDARD) &&
1523 (hfsmp->hfs_attribute_vp == NULL) &&
1524 !(hfsmp->hfs_flags & HFS_READ_ONLY)) {
1525 (void) hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
1526 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
1528 if (hfsmp->hfs_attribute_vp)
1529 hfsmp->hfs_max_inline_attrsize = getmaxinlineattrsize(hfsmp->hfs_attribute_vp);
1540 hfs_set_volxattr(struct hfsmount *hfsmp, unsigned int xattrtype, int state)
1547 if (hfsmp->hfs_flags & HFS_STANDARD) {
1554 if (hfsmp->hfs_attribute_vp == NULL) {
1555 result = hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
1556 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
1586 if (hfs_start_transaction(hfsmp) != 0) {
1590 btfile = VTOF(hfsmp->hfs_attribute_vp);
1592 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
1622 hfs_systemfile_unlock(hfsmp, lockflags);
1625 hfs_end_transaction(hfsmp);
1633 vfs_clearextendedsecurity(HFSTOVFS(hfsmp));
1635 vfs_setextendedsecurity(HFSTOVFS(hfsmp));
1639 HFS_MOUNT_LOCK(hfsmp, TRUE);
1641 hfsmp->hfs_flags &= ~HFS_XATTR_EXTENTS;
1643 hfsmp->hfs_flags |= HFS_XATTR_EXTENTS;
1645 HFS_MOUNT_UNLOCK(hfsmp, TRUE);
1661 hfs_check_volxattr(struct hfsmount *hfsmp, unsigned int xattrtype)
1668 if (hfsmp->hfs_flags & HFS_STANDARD ||
1669 hfsmp->hfs_attribute_vp == NULL) {
1692 btfile = VTOF(hfsmp->hfs_attribute_vp);
1694 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
1699 hfs_systemfile_unlock(hfsmp, lockflags);
1704 vfs_setextendedsecurity(HFSTOVFS(hfsmp));
1706 HFS_MOUNT_LOCK(hfsmp, TRUE);
1707 hfsmp->hfs_flags |= HFS_XATTR_EXTENTS;
1708 HFS_MOUNT_UNLOCK(hfsmp, TRUE);
1819 getnodecount(struct hfsmount *hfsmp, size_t nodesize)
1830 freebytes = (u_int64_t)hfs_freeblks(hfsmp, 0) * (u_int64_t)hfsmp->blockSize;
1832 calcbytes = MIN(hfsmp->hfs_catalog_cp->c_datafork->ff_size / 5, 20 * 1024 * 1024);
1834 calcbytes = MAX(calcbytes, hfsmp->hfs_catalog_cp->c_datafork->ff_clumpsize);
1875 get_attr_data_vnode(struct hfsmount *hfsmp, vnode_t *vpp)
1880 vp = hfsmp->hfs_attrdata_vp;
1897 cat_attr.ca_blocks = hfsmp->totalBlocks;
1915 cat_fork.cf_size = (u_int64_t)hfsmp->totalBlocks * (u_int64_t)hfsmp->blockSize;
1916 cat_fork.cf_blocks = hfsmp->totalBlocks;
1920 result = hfs_getnewvnode(hfsmp, NULL, NULL, &cat_desc, 0, &cat_attr, &cat_fork, &vp);
1922 HFS_MOUNT_LOCK(hfsmp, 1);
1924 if (hfsmp->hfs_attrdata_vp != NULLVP) {
1925 HFS_MOUNT_UNLOCK(hfsmp, 1);
1928 vp = hfsmp->hfs_attrdata_vp;
1930 hfsmp->hfs_attrdata_vp = vp;
1931 HFS_MOUNT_UNLOCK(hfsmp, 1);
1949 read_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents)
1959 if ((result = get_attr_data_vnode(hfsmp, &evp))) {
1966 blksize = (int)hfsmp->blockSize;
2002 write_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents)
2014 if ((result = get_attr_data_vnode(hfsmp, &evp))) {
2021 blksize = (int) hfsmp->blockSize;
2057 alloc_attr_blks(struct hfsmount *hfsmp, size_t attrsize, size_t extentbufsize, HFSPlusExtentDescriptor *extents, int *blocks)
2066 startblk = hfsmp->hfs_metazone_end;
2067 blkcnt = howmany(attrsize, hfsmp->blockSize);
2068 if (blkcnt > (int)hfs_freeblks(hfsmp, 0)) {
2074 lockflags = hfs_systemfile_lock(hfsmp, SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
2077 result = BlockAllocate(hfsmp, startblk, blkcnt, blkcnt, 0, 0,
2102 (void) BlockDeallocate(hfsmp, extents[i].startBlock, blkcnt);
2109 hfs_systemfile_unlock(hfsmp, lockflags);
2117 free_attr_blks(struct hfsmount *hfsmp, int blkcnt, HFSPlusExtentDescriptor *extents)
2124 if (get_attr_data_vnode(hfsmp, &evp) != 0) {
2127 lockflags = hfs_systemfile_lock(hfsmp, SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
2141 (void)BlockDeallocate(hfsmp, extents[i].startBlock, extents[i].blockCount);
2154 start = (u_int64_t)extents[i].startBlock * (u_int64_t)hfsmp->blockSize;
2155 end = start + (u_int64_t)extents[i].blockCount * (u_int64_t)hfsmp->blockSize;
2156 (void) ubc_msync(hfsmp->hfs_attrdata_vp, start, end, &start, UBC_INVALIDATE);
2160 hfs_systemfile_unlock(hfsmp, lockflags);