Lines Matching defs:hfsmp

90 static int  remove_attribute_records(struct hfsmount *hfsmp, BTreeIterator * iterator);
92 static int getnodecount(struct hfsmount *hfsmp, size_t nodesize);
96 static int read_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents);
98 static int write_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents);
100 static int alloc_attr_blks(struct hfsmount *hfsmp, size_t attrsize, size_t extentbufsize, HFSPlusExtentDescriptor *extents, int *blocks);
102 static void free_attr_blks(struct hfsmount *hfsmp, int blkcnt, HFSPlusExtentDescriptor *extents);
278 struct hfsmount *hfsmp;
347 hfsmp = VTOHFS(vp);
352 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE, FALSE);
400 hfsmp = VTOHFS(vp);
404 if (hfsmp->hfs_flags & HFS_STANDARD) {
431 * We pass the hfsmp argument directly here because we may not necessarily have a cnode to
441 struct hfsmount *hfsmp, u_int32_t fileid) {
463 if ((hfsmp->hfs_attribute_vp == NULL) ||
470 btfile = VTOF(hfsmp->hfs_attribute_vp);
499 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
501 hfs_systemfile_unlock(hfsmp, lockflags);
589 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
608 hfs_systemfile_unlock(hfsmp, lockflags);
614 result = read_attr_data(hfsmp, uio, attrlen, extentbuf);
620 result = read_attr_data(hfsmp, uio, recp->forkData.theFork.logicalSize, recp->forkData.theFork.extents);
662 struct hfsmount *hfsmp;
672 hfsmp = VTOHFS(vp);
834 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE, FALSE);
870 if (hfsmp->hfs_flags & HFS_STANDARD) {
885 hfsmp->hfs_max_inline_attrsize != 0 &&
886 attrsize < hfsmp->hfs_max_inline_attrsize) {
929 * See comments from hfs_getxattr_internal on why we need to pass 'hfsmp' and fileid here.
937 * hfsmp->hfs_max_inline_attrsize bytes long.
940 struct vnop_setxattr_args *ap, struct hfsmount *hfsmp,
975 if (hfs_start_transaction(hfsmp) != 0) {
993 if (hfsmp->hfs_attribute_vp == NULL) {
994 result = hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
995 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
1000 if (hfsmp->hfs_max_inline_attrsize == 0) {
1001 hfsmp->hfs_max_inline_attrsize = getmaxinlineattrsize(hfsmp->hfs_attribute_vp);
1006 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
1022 btfile = VTOF(hfsmp->hfs_attribute_vp);
1040 if (attrsize > hfsmp->hfs_max_inline_attrsize) {
1058 blkcnt = howmany(attrsize, hfsmp->blockSize);
1067 result = alloc_attr_blks(hfsmp, attrsize, extentbufsize, extentptr, &allocatedblks);
1073 result = write_attr_data(hfsmp, uio, attrsize, extentptr);
1087 result = remove_attribute_records(hfsmp, iterator);
1153 result = remove_attribute_records(hfsmp, iterator);
1205 hfs_systemfile_unlock(hfsmp, lockflags);
1223 free_attr_blks(hfsmp, allocatedblks, extentptr);
1225 hfs_end_transaction(hfsmp);
1261 struct hfsmount *hfsmp;
1270 hfsmp = VTOHFS(vp);
1297 result = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE, FALSE);
1313 if ((result = hfs_start_transaction(hfsmp))) {
1327 hfs_end_transaction(hfsmp);
1417 if (hfsmp->hfs_flags & HFS_STANDARD) {
1420 if (hfsmp->hfs_attribute_vp == NULL) {
1439 if (hfs_start_transaction(hfsmp) != 0) {
1443 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE | SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
1445 result = remove_attribute_records(hfsmp, iterator);
1447 hfs_systemfile_unlock(hfsmp, lockflags);
1452 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
1455 result = file_attribute_exist(hfsmp, cp->c_fileid);
1463 hfs_systemfile_unlock(hfsmp, lockflags);
1472 hfs_end_transaction(hfsmp);
1493 file_attribute_exist(struct hfsmount *hfsmp, uint32_t fileID)
1502 if (hfsmp->hfs_attribute_vp == NULL) {
1519 btfile = VTOF(hfsmp->hfs_attribute_vp);
1553 remove_attribute_records(struct hfsmount *hfsmp, BTreeIterator * iterator)
1561 btfile = VTOF(hfsmp->hfs_attribute_vp);
1591 free_attr_blks(hfsmp, extentblks, attrdata.forkData.theFork.extents);
1614 free_attr_blks(hfsmp, extentblks, attrdata.overflowExtents.extents);
1644 struct hfsmount *hfsmp;
1664 hfsmp = VTOHFS(vp);
1729 if (hfsmp->hfs_flags & HFS_STANDARD) {
1734 if ((hfsmp->hfs_attribute_vp == NULL) ||
1739 btfile = VTOF(hfsmp->hfs_attribute_vp);
1764 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_SHARED_LOCK);
1768 hfs_systemfile_unlock(hfsmp, lockflags);
1787 hfs_systemfile_unlock(hfsmp, lockflags);
1873 hfs_removeallattr(struct hfsmount *hfsmp, u_int32_t fileid)
1880 if (hfsmp->hfs_attribute_vp == NULL) {
1883 btfile = VTOF(hfsmp->hfs_attribute_vp);
1894 if (hfs_start_transaction(hfsmp) != 0) {
1900 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE | SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
1908 hfs_systemfile_unlock(hfsmp, lockflags);
1909 hfs_end_transaction(hfsmp);
1912 result = remove_attribute_records(hfsmp, iterator);
1919 hfs_systemfile_unlock(hfsmp, lockflags);
1920 hfs_end_transaction(hfsmp);
1931 hfs_xattr_init(struct hfsmount * hfsmp)
1936 if (!(hfsmp->hfs_flags & HFS_STANDARD) &&
1937 (hfsmp->hfs_attribute_vp == NULL) &&
1938 !(hfsmp->hfs_flags & HFS_READ_ONLY)) {
1939 (void) hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
1940 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
1942 if (hfsmp->hfs_attribute_vp)
1943 hfsmp->hfs_max_inline_attrsize = getmaxinlineattrsize(hfsmp->hfs_attribute_vp);
1952 hfs_set_volxattr(struct hfsmount *hfsmp, unsigned int xattrtype, int state)
1959 if (hfsmp->hfs_flags & HFS_STANDARD) {
1969 if (hfsmp->hfs_attribute_vp == NULL) {
1970 result = hfs_create_attr_btree(hfsmp, ATTRIBUTE_FILE_NODE_SIZE,
1971 getnodecount(hfsmp, ATTRIBUTE_FILE_NODE_SIZE));
1991 if (hfs_start_transaction(hfsmp) != 0) {
1995 btfile = VTOF(hfsmp->hfs_attribute_vp);
1997 lockflags = hfs_systemfile_lock(hfsmp, SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
2027 hfs_systemfile_unlock(hfsmp, lockflags);
2030 hfs_end_transaction(hfsmp);
2033 HFS_MOUNT_LOCK(hfsmp, TRUE);
2035 hfsmp->hfs_flags &= ~HFS_XATTR_EXTENTS;
2037 hfsmp->hfs_flags |= HFS_XATTR_EXTENTS;
2039 HFS_MOUNT_UNLOCK(hfsmp, TRUE);
2154 getnodecount(struct hfsmount *hfsmp, size_t nodesize)
2165 freebytes = (u_int64_t)hfs_freeblks(hfsmp, 0) * (u_int64_t)hfsmp->blockSize;
2167 calcbytes = MIN(hfsmp->hfs_catalog_cp->c_datafork->ff_size / 5, 20 * 1024 * 1024);
2169 calcbytes = MAX(calcbytes, hfsmp->hfs_catalog_cp->c_datafork->ff_clumpsize);
2211 * - the attrdata vnode is initialized as hfsmp->hfs_attrdata_vp
2221 int init_attrdata_vnode(struct hfsmount *hfsmp)
2242 cat_attr.ca_blocks = hfsmp->totalBlocks;
2260 cat_fork.cf_size = (u_int64_t)hfsmp->totalBlocks * (u_int64_t)hfsmp->blockSize;
2261 cat_fork.cf_blocks = hfsmp->totalBlocks;
2265 result = hfs_getnewvnode(hfsmp, NULL, NULL, &cat_desc, 0, &cat_attr,
2268 hfsmp->hfs_attrdata_vp = vp;
2278 read_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents)
2280 vnode_t evp = hfsmp->hfs_attrdata_vp;
2292 blksize = (int)hfsmp->blockSize;
2327 write_attr_data(struct hfsmount *hfsmp, uio_t uio, size_t datasize, HFSPlusExtentDescriptor *extents)
2329 vnode_t evp = hfsmp->hfs_attrdata_vp;
2342 blksize = (int) hfsmp->blockSize;
2377 alloc_attr_blks(struct hfsmount *hfsmp, size_t attrsize, size_t extentbufsize, HFSPlusExtentDescriptor *extents, int *blocks)
2386 startblk = hfsmp->hfs_metazone_end;
2387 blkcnt = howmany(attrsize, hfsmp->blockSize);
2388 if (blkcnt > (int)hfs_freeblks(hfsmp, 0)) {
2394 lockflags = hfs_systemfile_lock(hfsmp, SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
2397 result = BlockAllocate(hfsmp, startblk, blkcnt, blkcnt, 0,
2422 (void) BlockDeallocate(hfsmp, extents[i].startBlock, blkcnt, 0);
2429 hfs_systemfile_unlock(hfsmp, lockflags);
2437 free_attr_blks(struct hfsmount *hfsmp, int blkcnt, HFSPlusExtentDescriptor *extents)
2439 vnode_t evp = hfsmp->hfs_attrdata_vp;
2444 lockflags = hfs_systemfile_lock(hfsmp, SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
2458 (void)BlockDeallocate(hfsmp, extents[i].startBlock, extents[i].blockCount, 0);
2471 start = (u_int64_t)extents[i].startBlock * (u_int64_t)hfsmp->blockSize;
2472 end = start + (u_int64_t)extents[i].blockCount * (u_int64_t)hfsmp->blockSize;
2473 (void) ubc_msync(hfsmp->hfs_attrdata_vp, start, end, &start, UBC_INVALIDATE);
2477 hfs_systemfile_unlock(hfsmp, lockflags);