• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/xnu-2422.115.4/bsd/hfs/

Lines Matching defs:hfsmp

88 static int  remove_attribute_records(struct hfsmount *hfsmp, BTreeIterator * iterator);
90 static int getnodecount(struct hfsmount *hfsmp, size_t nodesize);
94 static int read_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents);
96 static int write_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents);
98 static int alloc_attr_blks(struct hfsmount *hfsmp, size_t attrsize, size_t extentbufsize, HFSPlusExtentDescriptor *extents, int *blocks);
100 static void free_attr_blks(struct hfsmount *hfsmp, int blkcnt, HFSPlusExtentDescriptor *extents);
279 struct hfsmount *hfsmp;
348 hfsmp = VTOHFS(vp);
353 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE, FALSE);
401 hfsmp = VTOHFS(vp);
405 if (hfsmp->hfs_flags & HFS_STANDARD) {
432 * We pass the hfsmp argument directly here because we may not necessarily have a cnode to
440 struct hfsmount *hfsmp, u_int32_t fileid)
462 if ((hfsmp->hfs_attribute_vp == NULL) ||
469 btfile = VTOF(hfsmp->hfs_attribute_vp);
497 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
499 hfs_systemfile_unlock(hfsmp, lockflags);
524 hfsmp->vcbVN, target_id, ap->a_name, datasize, sizeof(HFSPlusAttrData));
557 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
559 hfs_systemfile_unlock(hfsmp, lockflags);
579 hfsmp->vcbVN, target_id, ap->a_name, datasize, sizeof(HFSPlusAttrForkData));
602 if (totalblocks > howmany(HFS_XATTR_MAXSIZE, hfsmp->blockSize)) {
625 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
644 hfs_systemfile_unlock(hfsmp, lockflags);
649 result = read_attr_data(hfsmp, uio, attrlen, extentbuf);
654 result = read_attr_data(hfsmp, uio, recp->forkData.theFork.logicalSize, recp->forkData.theFork.extents);
696 struct hfsmount *hfsmp;
706 hfsmp = VTOHFS(vp);
884 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE, FALSE);
919 if (hfsmp->hfs_flags & HFS_STANDARD) {
936 hfsmp->hfs_max_inline_attrsize != 0 &&
937 attrsize < hfsmp->hfs_max_inline_attrsize) {
980 * See comments from hfs_getxattr_internal on why we need to pass 'hfsmp' and fileid here.
988 * hfsmp->hfs_max_inline_attrsize bytes long.
991 struct vnop_setxattr_args *ap, struct hfsmount *hfsmp,
1026 if (hfs_start_transaction(hfsmp) != 0) {
1044 if (hfsmp->hfs_attribute_vp == NULL) {
1045 result = hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
1046 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
1051 if (hfsmp->hfs_max_inline_attrsize == 0) {
1052 hfsmp->hfs_max_inline_attrsize = getmaxinlineattrsize(hfsmp->hfs_attribute_vp);
1057 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
1073 btfile = VTOF(hfsmp->hfs_attribute_vp);
1091 if (attrsize > hfsmp->hfs_max_inline_attrsize) {
1109 blkcnt = howmany(attrsize, hfsmp->blockSize);
1118 result = alloc_attr_blks(hfsmp, attrsize, extentbufsize, extentptr, &allocatedblks);
1124 result = write_attr_data(hfsmp, uio, attrsize, extentptr);
1129 hfsmp->vcbVN, result, name ? name : "", ap->a_name);
1138 result = remove_attribute_records(hfsmp, iterator);
1143 hfsmp->vcbVN, result, name ? name : "", ap->a_name);
1172 hfsmp->vcbVN, target_id, ap->a_name, result);
1195 hfsmp->vcbVN, target_id, ap->a_name, result);
1203 result = remove_attribute_records(hfsmp, iterator);
1254 hfs_systemfile_unlock(hfsmp, lockflags);
1272 free_attr_blks(hfsmp, allocatedblks, extentptr);
1274 hfs_end_transaction(hfsmp);
1310 struct hfsmount *hfsmp;
1319 hfsmp = VTOHFS(vp);
1346 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE, FALSE);
1362 if ((result = hfs_start_transaction(hfsmp))) {
1376 hfs_end_transaction(hfsmp);
1471 if (hfsmp->hfs_flags & HFS_STANDARD) {
1474 if (hfsmp->hfs_attribute_vp == NULL) {
1493 if (hfs_start_transaction(hfsmp) != 0) {
1497 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE | SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
1499 result = remove_attribute_records(hfsmp, iterator);
1501 hfs_systemfile_unlock(hfsmp, lockflags);
1506 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
1509 result = file_attribute_exist(hfsmp, cp->c_fileid);
1517 hfs_systemfile_unlock(hfsmp, lockflags);
1526 hfs_end_transaction(hfsmp);
1547 file_attribute_exist(struct hfsmount *hfsmp, uint32_t fileID)
1556 if (hfsmp->hfs_attribute_vp == NULL) {
1573 btfile = VTOF(hfsmp->hfs_attribute_vp);
1607 remove_attribute_records(struct hfsmount *hfsmp, BTreeIterator * iterator)
1615 btfile = VTOF(hfsmp->hfs_attribute_vp);
1645 free_attr_blks(hfsmp, extentblks, attrdata.forkData.theFork.extents);
1659 hfsmp->vcbVN, MacToVFSError(result), attrdata.recordType != kHFSPlusAttrExtents, totalblks);
1668 free_attr_blks(hfsmp, extentblks, attrdata.overflowExtents.extents);
1698 struct hfsmount *hfsmp;
1718 hfsmp = VTOHFS(vp);
1792 if (hfsmp->hfs_flags & HFS_STANDARD) {
1797 if ((hfsmp->hfs_attribute_vp == NULL) ||
1802 btfile = VTOF(hfsmp->hfs_attribute_vp);
1827 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
1831 hfs_systemfile_unlock(hfsmp, lockflags);
1850 hfs_systemfile_unlock(hfsmp, lockflags);
1937 hfs_removeallattr(struct hfsmount *hfsmp, u_int32_t fileid)
1944 if (hfsmp->hfs_attribute_vp == NULL) {
1947 btfile = VTOF(hfsmp->hfs_attribute_vp);
1958 if (hfs_start_transaction(hfsmp) != 0) {
1964 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE | SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
1972 hfs_systemfile_unlock(hfsmp, lockflags);
1973 hfs_end_transaction(hfsmp);
1976 result = remove_attribute_records(hfsmp, iterator);
1983 hfs_systemfile_unlock(hfsmp, lockflags);
1984 hfs_end_transaction(hfsmp);
1995 hfs_xattr_init(struct hfsmount * hfsmp)
2000 if (!(hfsmp->hfs_flags & HFS_STANDARD) &&
2001 (hfsmp->hfs_attribute_vp == NULL) &&
2002 !(hfsmp->hfs_flags & HFS_READ_ONLY)) {
2003 (void) hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
2004 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
2006 if (hfsmp->hfs_attribute_vp)
2007 hfsmp->hfs_max_inline_attrsize = getmaxinlineattrsize(hfsmp->hfs_attribute_vp);
2016 hfs_set_volxattr(struct hfsmount *hfsmp, unsigned int xattrtype, int state)
2023 if (hfsmp->hfs_flags & HFS_STANDARD) {
2033 if (hfsmp->hfs_attribute_vp == NULL) {
2034 result = hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
2035 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
2055 if (hfs_start_transaction(hfsmp) != 0) {
2059 btfile = VTOF(hfsmp->hfs_attribute_vp);
2061 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
2091 hfs_systemfile_unlock(hfsmp, lockflags);
2094 hfs_end_transaction(hfsmp);
2097 hfs_lock_mount (hfsmp);
2099 hfsmp->hfs_flags &= ~HFS_XATTR_EXTENTS;
2101 hfsmp->hfs_flags |= HFS_XATTR_EXTENTS;
2103 hfs_unlock_mount (hfsmp);
2219 getnodecount(struct hfsmount *hfsmp, size_t nodesize)
2230 freebytes = (u_int64_t)hfs_freeblks(hfsmp, 0) * (u_int64_t)hfsmp->blockSize;
2232 calcbytes = MIN(hfsmp->hfs_catalog_cp->c_datafork->ff_size / 5, 20 * 1024 * 1024);
2234 calcbytes = MAX(calcbytes, hfsmp->hfs_catalog_cp->c_datafork->ff_clumpsize);
2276 * - the attrdata vnode is initialized as hfsmp->hfs_attrdata_vp
2286 int init_attrdata_vnode(struct hfsmount *hfsmp)
2307 cat_attr.ca_blocks = hfsmp->totalBlocks;
2325 cat_fork.cf_size = (u_int64_t)hfsmp->totalBlocks * (u_int64_t)hfsmp->blockSize;
2326 cat_fork.cf_blocks = hfsmp->totalBlocks;
2330 result = hfs_getnewvnode(hfsmp, NULL, NULL, &cat_desc, 0, &cat_attr,
2333 hfsmp->hfs_attrdata_vp = vp;
2343 read_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents)
2345 vnode_t evp = hfsmp->hfs_attrdata_vp;
2357 blksize = (int)hfsmp->blockSize;
2392 write_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents)
2394 vnode_t evp = hfsmp->hfs_attrdata_vp;
2407 blksize = (int) hfsmp->blockSize;
2442 alloc_attr_blks(struct hfsmount *hfsmp, size_t attrsize, size_t extentbufsize, HFSPlusExtentDescriptor *extents, int *blocks)
2451 startblk = hfsmp->hfs_metazone_end;
2452 blkcnt = howmany(attrsize, hfsmp->blockSize);
2453 if (blkcnt > (int)hfs_freeblks(hfsmp, 0)) {
2459 lockflags = hfs_systemfile_lock(hfsmp, SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
2463 result = BlockAllocate(hfsmp, startblk, blkcnt, blkcnt, 0,
2470 result = BlockAllocate(hfsmp, startblk, blkcnt, blkcnt, HFS_ALLOC_FLUSHTXN,
2498 (void) BlockDeallocate(hfsmp, extents[i].startBlock, blkcnt, 0);
2505 hfs_systemfile_unlock(hfsmp, lockflags);
2513 free_attr_blks(struct hfsmount *hfsmp, int blkcnt, HFSPlusExtentDescriptor *extents)
2515 vnode_t evp = hfsmp->hfs_attrdata_vp;
2520 lockflags = hfs_systemfile_lock(hfsmp, SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
2534 (void)BlockDeallocate(hfsmp, extents[i].startBlock, extents[i].blockCount, 0);
2547 start = (u_int64_t)extents[i].startBlock * (u_int64_t)hfsmp->blockSize;
2548 end = start + (u_int64_t)extents[i].blockCount * (u_int64_t)hfsmp->blockSize;
2549 (void) ubc_msync(hfsmp->hfs_attrdata_vp, start, end, &start, UBC_INVALIDATE);
2553 hfs_systemfile_unlock(hfsmp, lockflags);