Lines Matching refs:hfsmp

85 int hfs_metasync(struct hfsmount *hfsmp, daddr64_t node, __unused struct proc *p);
86 int hfs_metasync_all(struct hfsmount *hfsmp);
94 int hfs_removefile_callback(struct buf *bp, void *hfsmp);
152 hfs_is_journal_file(struct hfsmount *hfsmp, struct cnode *cp)
154 if (hfsmp->jnl != NULL &&
155 (cp->c_fileid == hfsmp->hfs_jnlinfoblkid ||
156 cp->c_fileid == hfsmp->hfs_jnlfileid)) {
367 * if the caller has passed a valid vnode (has a ref count > 0), then hfsmp and fid are not required.
368 * if the caller doesn't have a vnode, pass NULL in vp, and pass valid hfsmp and fid.
374 hfs_uncompressed_size_of_compressed_file(struct hfsmount *hfsmp, struct vnode *vp, cnid_t fid, off_t *size, int skiplock)
384 if (!hfsmp || !fid) { /* make sure we have the required parameters */
387 if (0 != hfs_vget(hfsmp, fid, &vp, skiplock, 0)) { /* vnode is null, use hfs_vget() to get it */
460 struct hfsmount *hfsmp = VTOHFS(vp);
506 if (hfs_is_journal_file(hfsmp, cp))
509 if ((hfsmp->hfs_flags & HFS_READ_ONLY) ||
510 (hfsmp->jnl == NULL) ||
524 if ((ap->a_mode & FWRITE) && (hfsmp->hfs_flags & HFS_QUOTAS))
558 (void) hfs_relocate(vp, hfsmp->nextAllocation + 4096,
584 struct hfsmount *hfsmp;
592 hfsmp = VTOHFS(vp);
640 if (hfsmp->hfs_freezing_proc == p && proc_exiting(p)) {
641 hfsmp->hfs_freezing_proc = NULL;
642 hfs_unlock_global (hfsmp);
643 lck_rw_unlock_exclusive(&hfsmp->hfs_insync);
663 hfs_sync_ejectable(hfsmp);
684 struct hfsmount *hfsmp;
744 hfsmp = VTOHFS(vp);
756 hfs_touchtimes(hfsmp, cp);
779 if ((hfsmp->hfs_flags & HFS_FOLDERCOUNT) &&
789 if (hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid != 0) {
792 if (hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid != 0) {
804 if (hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid != 0)
806 if (hfsmp->hfs_private_desc[DIR_HARDLINKS].cd_cnid != 0)
808 if (hfsmp->jnl || ((hfsmp->vcbAtrb & kHFSVolumeJournaledMask) && (hfsmp->hfs_flags & HFS_READ_ONLY)))
833 VATTR_RETURN(vap, va_data_alloc, blocks * (u_int64_t)hfsmp->blockSize);
839 VATTR_RETURN(vap, va_data_alloc, blocks * (u_int64_t)hfsmp->blockSize);
875 error = hfs_vgetrsrc(hfsmp, vp, &rvp, TRUE, FALSE);
904 VATTR_RETURN(vap, va_total_alloc, (u_int64_t)cp->c_blocks * (u_int64_t)hfsmp->blockSize);
954 vap->va_iosize = hfsmp->hfs_logBlockSize;
987 vap->va_fsid = hfsmp->hfs_raw_dev;
1049 if ((error = hfs_lookup_siblinglinks(hfsmp, vap->va_linkid, &prevlinkid, &nextlinkid))){
1065 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_SHARED_LOCK);
1066 error = cat_findname(hfsmp, nextlinkid, &linkdesc);
1067 hfs_systemfile_unlock(hfsmp, lockflags);
1117 struct hfsmount *hfsmp;
1153 hfsmp = VTOHFS(vp);
1156 if (hfs_is_journal_file(hfsmp, VTOC(vp))) {
1348 hfs_setencodingbits(hfsmp, cp->c_encoding);
1614 struct hfsmount *hfsmp;
1713 hfsmp = VTOHFS(from_vp);
1722 if (hfs_is_journal_file(hfsmp, from_cp) ||
1723 hfs_is_journal_file(hfsmp, to_cp)) {
1738 if ((error = hfs_start_transaction(hfsmp)) != 0) {
1746 if ((error = cat_preflight(hfsmp, CAT_EXCHANGE, &cookie, vfs_context_proc(ap->a_context)))) {
1755 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG | SFL_EXTENTS | SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
1762 from_parid = hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid;
1772 to_parid = hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid;
1780 error = ExchangeFileIDs(hfsmp, from_nameptr, to_nameptr, from_parid,
1782 hfs_systemfile_unlock(hfsmp, lockflags);
1896 hfs_chash_rehash(hfsmp, from_cp, to_cp);
1915 cat_postflight(hfsmp, &cookie, vfs_context_proc(ap->a_context));
1918 hfs_end_transaction(hfsmp);
1992 struct hfsmount *hfsmp = NULL;
2003 hfsmp = VTOHFS(from_vp);
2080 if ((error = hfs_start_transaction (hfsmp)) != 0) {
2086 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG | SFL_EXTENTS | SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
2091 hfs_systemfile_unlock(hfsmp, lockflags);
2097 hfs_systemfile_unlock(hfsmp, lockflags);
2116 error = MoveData(hfsmp, from_cp->c_cnid, to_cp->c_cnid, 1);
2119 error = MoveData (hfsmp, from_cp->c_cnid, to_cp->c_cnid, 0);
2147 hfs_touchtimes(hfsmp, to_cp);
2148 hfs_touchtimes(hfsmp, from_cp);
2165 (void) cat_update(hfsmp, &from_cp->c_desc, &from_cp->c_attr,
2168 (void) cat_update(hfsmp, &to_cp->c_desc, &to_cp->c_attr,
2173 hfs_systemfile_unlock(hfsmp, lockflags);
2178 hfs_end_transaction(hfsmp);
2262 struct hfsmount *hfsmp = VTOHFS(vp);
2293 if (hfsmp->jnl == NULL) {
2380 // if (hfsmp->jnl && journal_active(hfsmp->jnl) >= 0)
2381 if (hfsmp->jnl)
2443 if (hfsmp->jnl) {
2444 hfs_journal_flush(hfsmp, FALSE);
2446 if (journal_uses_fua(hfsmp->jnl)) {
2453 VNOP_IOCTL(hfsmp->hfs_devvp, DKIOCSYNCHRONIZECACHE, NULL, FWRITE, NULL);
2456 retval = hfs_metasync_all(hfsmp);
2458 VNOP_IOCTL(hfsmp->hfs_devvp, DKIOCSYNCHRONIZECACHE, NULL, FWRITE, NULL);
2469 hfs_metasync(struct hfsmount *hfsmp, daddr64_t node, __unused struct proc *p)
2475 vp = HFSTOVCB(hfsmp)->catalogRefNum;
2478 if (hfsmp->jnl) {
2482 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_EXCLUSIVE_LOCK);
2502 hfs_systemfile_unlock(hfsmp, lockflags);
2515 hfs_metasync_all(struct hfsmount *hfsmp)
2520 lockflags = hfs_systemfile_lock(hfsmp,
2524 if (hfsmp->hfs_catalog_vp)
2525 hfs_btsync(hfsmp->hfs_catalog_vp, 0);
2526 if (hfsmp->hfs_extents_vp)
2527 hfs_btsync(hfsmp->hfs_extents_vp, 0);
2528 if (hfsmp->hfs_attribute_vp)
2529 hfs_btsync(hfsmp->hfs_attribute_vp, 0);
2532 if (hfsmp->hfs_catalog_vp)
2533 vnode_waitforwrites(hfsmp->hfs_catalog_vp, 0, 0, 0, "hfs_metasync_all");
2534 if (hfsmp->hfs_extents_vp)
2535 vnode_waitforwrites(hfsmp->hfs_extents_vp, 0, 0, 0, "hfs_metasync_all");
2536 if (hfsmp->hfs_attribute_vp)
2537 vnode_waitforwrites(hfsmp->hfs_attribute_vp, 0, 0, 0, "hfs_metasync_all");
2539 hfs_systemfile_unlock(hfsmp, lockflags);
2638 struct hfsmount * hfsmp;
2645 hfsmp = VTOHFS(vp);
2689 return hfs_unlink(hfsmp, dvp, vp, cnp, skip_reserve);
2712 if (((hfsmp->hfs_attribute_vp != NULL) &&
2732 if (hfsmp->hfs_flags & HFS_QUOTAS)
2735 if ((error = hfs_start_transaction(hfsmp)) != 0) {
2768 if (!hfs_valid_cnode(hfsmp, dvp, cnp, cp->c_fileid, NULL, &error)) {
2774 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG | SFL_ATTRIBUTE | SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
2780 if ((error = cat_preflight(hfsmp, CAT_DELETE, NULL, 0))) {
2781 hfs_systemfile_unlock(hfsmp, lockflags);
2786 error = cat_delete(hfsmp, &desc, &cp->c_attr);
2791 DEC_FOLDERCOUNT(hfsmp, dcp->c_attr);
2795 hfs_touchtimes(hfsmp, cp);
2796 (void) cat_update(hfsmp, &dcp->c_desc, &dcp->c_attr, NULL, NULL);
2800 hfs_systemfile_unlock(hfsmp, lockflags);
2806 if (hfsmp->hfs_flags & HFS_QUOTAS)
2810 hfs_volupdate(hfsmp, VOL_RMDIR, (dcp->c_cnid == kHFSRootFolderID));
2819 hfs_end_transaction(hfsmp);
2974 hfs_removefile_callback(struct buf *bp, void *hfsmp) {
2981 journal_kill_block(((struct hfsmount *)hfsmp)->jnl, bp);
3014 struct hfsmount *hfsmp;
3027 hfsmp = VTOHFS(vp);
3034 if (!hfs_valid_cnode(hfsmp, dvp, cnp, cp->c_fileid, NULL, &error)) {
3052 if (hfs_is_journal_file(hfsmp, cp)) {
3088 return hfs_unlink(hfsmp, dvp, vp, cnp, skip_reserve);
3099 if ((cp->c_parentcnid != hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid) &&
3146 if ((hfsmp->hfs_attribute_vp != NULL) &&
3162 (hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid == 0)) {
3169 if (hfsmp->hfs_flags & HFS_QUOTAS)
3196 if ((error = hfs_start_transaction(hfsmp)) != 0) {
3202 if (hfsmp->jnl && vnode_islnk(vp) && (defer_remove == 0)) {
3203 buf_iterate(vp, hfs_removefile_callback, BUF_SKIP_NONLOCKED, (void *)hfsmp);
3227 error = hfs_prepare_release_storage (hfsmp, vp);
3238 error = hfs_prepare_release_storage (hfsmp, rsrc_vp);
3296 to_desc.cd_parentcnid = hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid;
3305 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_EXCLUSIVE_LOCK);
3307 if ((error = cat_preflight(hfsmp, CAT_RENAME, NULL, 0))) {
3308 hfs_systemfile_unlock(hfsmp, lockflags);
3313 error = cat_rename(hfsmp, &desc, &todir_desc,
3317 hfsmp->hfs_private_attr[FILE_HARDLINKS].ca_entries++;
3319 INC_FOLDERCOUNT(hfsmp, hfsmp->hfs_private_attr[FILE_HARDLINKS]);
3321 (void) cat_update(hfsmp, &hfsmp->hfs_private_desc[FILE_HARDLINKS],
3322 &hfsmp->hfs_private_attr[FILE_HARDLINKS], NULL, NULL);
3328 DEC_FOLDERCOUNT(hfsmp, dcp->c_attr);
3333 (void) cat_update(hfsmp, &dcp->c_desc, &dcp->c_attr, NULL, NULL);
3339 (void) cat_update(hfsmp, &to_desc, &cp->c_attr, NULL, NULL);
3341 hfs_systemfile_unlock(hfsmp, lockflags);
3353 int blksize = hfsmp->blockSize;
3377 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG | SFL_ATTRIBUTE | SFL_BITMAP, HFS_EXCLUSIVE_LOCK);
3381 error = cat_lookup (hfsmp, &desc, 1, (struct cat_desc*) NULL,
3385 hfs_systemfile_unlock (hfsmp, lockflags);
3391 if ((error = cat_preflight(hfsmp, CAT_DELETE, NULL, 0))) {
3395 hfs_systemfile_unlock(hfsmp, lockflags);
3400 error = cat_delete(hfsmp, &desc, &cp->c_attr);
3414 (void) cat_update(hfsmp, &dcp->c_desc, &dcp->c_attr, NULL, NULL);
3416 hfs_systemfile_unlock(hfsmp, lockflags);
3455 if (hfsmp->hfs_flags & HFS_QUOTAS) {
3465 error = hfs_release_storage (hfsmp, cp->c_datafork, temp_rsrc_fork, fileid);
3469 error = hfs_release_storage (hfsmp, cp->c_datafork, cp->c_rsrcfork, fileid);
3479 hfs_mark_volume_inconsistent(hfsmp);
3501 hfs_volupdate(hfsmp, VOL_RMFILE, (dcp->c_cnid == kHFSRootFolderID));
3525 hfs_volupdate (hfsmp, VOL_UPDATE, 0);
3529 hfs_end_transaction(hfsmp);
3622 struct hfsmount *hfsmp;
3640 hfsmp = VTOHFS(tdvp);
3672 if ((fdvp == tdvp) && ((hfsmp->hfs_flags & HFS_CASE_SENSITIVE) == 0)) {
3786 if ((fcp->c_flag & (C_NOEXISTS | C_DELETED)) || !hfs_valid_cnode(hfsmp, fdvp, fcnp, fcp->c_fileid, NULL, &error)) {
3791 if (tcp && ((tcp->c_flag & (C_NOEXISTS | C_DELETED)) || !hfs_valid_cnode(hfsmp, tdvp, tcnp, tcp->c_fileid, NULL, &error))) {
3829 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_SHARED_LOCK);
3830 if (cat_check_link_ancestry(hfsmp, tdcp->c_fileid, 0)) {
3832 hfs_systemfile_unlock(hfsmp, lockflags);
3835 hfs_systemfile_unlock(hfsmp, lockflags);
3913 (hfs_owner_rights(hfsmp, tcp->c_uid, vfs_context_ucred(tcnp->cn_context), p, false)) ) {
3919 if (hfs_is_journal_file(hfsmp, fcp) ||
3920 (tcp && hfs_is_journal_file(hfsmp, tcp))) {
3946 if ((error = hfs_start_transaction(hfsmp)) != 0) {
3960 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_SHARED_LOCK);
3961 if (cat_check_link_ancestry(hfsmp, tdcp->c_fileid, 0)) {
3963 hfs_systemfile_unlock(hfsmp, lockflags);
3966 hfs_systemfile_unlock(hfsmp, lockflags);
3985 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_SHARED_LOCK);
3987 if (cat_lookup(hfsmp, &tmpdesc, 0, NULL, NULL, NULL, &real_cnid) != 0) {
3988 hfs_systemfile_unlock(hfsmp, lockflags);
3994 hfs_systemfile_unlock(hfsmp, lockflags);
4000 if ((error = cat_preflight(hfsmp, CAT_RENAME + CAT_DELETE, &cookie, p))) {
4052 (hfsmp->hfs_flags & HFS_CASE_SENSITIVE)) {
4153 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_EXCLUSIVE_LOCK);
4154 error = cat_rename(hfsmp, &from_desc, &tdcp->c_desc, &to_desc, &out_desc);
4155 hfs_systemfile_unlock(hfsmp, lockflags);
4180 hfs_volupdate(hfsmp, vnode_isdir(fvp) ? VOL_RMDIR : VOL_RMFILE,
4182 hfs_volupdate(hfsmp, vnode_isdir(fvp) ? VOL_MKDIR : VOL_MKFILE,
4197 error = cat_set_childlinkbit(hfsmp, tdcp->c_parentcnid);
4203 INC_FOLDERCOUNT(hfsmp, tdcp->c_attr);
4204 DEC_FOLDERCOUNT(hfsmp, fdcp->c_attr);
4260 cat_postflight(hfsmp, &cookie, p);
4263 hfs_end_transaction(hfsmp);
4315 struct hfsmount *hfsmp;
4331 hfsmp = VTOHFS(dvp);
4335 if (((u_int64_t)hfs_freeblks(hfsmp, 0) * (u_int64_t)hfsmp->blockSize) < len) {
4359 if ((error = hfs_start_transaction(hfsmp)) != 0) {
4380 hfs_end_transaction(hfsmp);
4387 if (hfs_start_transaction(hfsmp) != 0) {
4399 bp = buf_getblk(vp, (daddr64_t)0, roundup((int)fp->ff_size, hfsmp->hfs_physical_block_size),
4401 if (hfsmp->jnl) {
4402 journal_modify_block_start(hfsmp->jnl, bp);
4408 if (hfsmp->jnl) {
4409 journal_modify_block_end(hfsmp->jnl, bp, NULL, NULL);
4423 hfs_end_transaction(hfsmp);
4504 struct hfsmount *hfsmp;
4541 hfsmp = VTOHFS(vp);
4638 if (hfsmp->jnl && uio_isuserspace(uio)) {
4652 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_SHARED_LOCK);
4656 if (cat_findname(hfsmp, cnid_hint, &localhint.dh_desc) == 0) {
4696 hfs_systemfile_unlock (hfsmp, lockflags);
4703 error = cat_getdirentries(hfsmp, cp->c_entries, dirhint, uio, ap->a_flags, &items, &eofflag);
4709 hfs_systemfile_unlock(hfsmp, lockflags);
4930 struct hfsmount *hfsmp;
4935 hfsmp = VTOHFS(vp);
4938 hfsmp->hfs_catalog_vp == NULL){
4941 if ((hfsmp->hfs_flags & HFS_READ_ONLY) || (cp->c_mode == 0)) {
4949 hfs_touchtimes(hfsmp, cp);
4981 if ((error = hfs_start_transaction(hfsmp)) != 0) {
5011 datafork.cf_size = datafork.cf_blocks * HFSTOVCB(hfsmp)->blockSize;
5039 rsrcfork.cf_size = rsrcfork.cf_blocks * HFSTOVCB(hfsmp)->blockSize;
5046 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_EXCLUSIVE_LOCK);
5049 error = cat_update(hfsmp, &cp->c_desc, &cp->c_attr, dataforkp, rsrcforkp);
5051 hfs_systemfile_unlock(hfsmp, lockflags);
5056 hfs_end_transaction(hfsmp);
5072 struct hfsmount *hfsmp;
5108 hfsmp = VTOHFS(dvp);
5126 if ((hfs_freeblks(hfsmp, 1) == 0) && (vfs_context_suser(ctx) != 0)) {
5146 if ((hfsmp->hfs_flags & HFS_STANDARD) && gTimeZone.tz_dsttime) {
5160 if (!(hfsmp->hfs_flags & HFS_STANDARD)) {
5162 if (hfsmp->hfs_flags & HFS_FOLDERCOUNT)
5170 if (cp_fs_protected(hfsmp->hfs_mp)) {
5204 if (hfsmp->hfs_flags & HFS_QUOTAS) {
5205 if ((error = hfs_quotacheck(hfsmp, 1, attr.ca_uid, attr.ca_gid,
5241 error = cp_entry_create_keys (&entry, dcp, hfsmp, cp_class, 0, attr.ca_mode);
5248 if ((error = hfs_start_transaction(hfsmp)) != 0) {
5256 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG | SFL_ATTRIBUTE, HFS_EXCLUSIVE_LOCK);
5259 if ((error = cat_preflight(hfsmp, CAT_CREATE, NULL, 0))) {
5260 hfs_systemfile_unlock(hfsmp, lockflags);
5263 error = cat_create(hfsmp, &in_desc, &attr, &out_desc);
5269 INC_FOLDERCOUNT(hfsmp, dcp->c_attr);
5274 (void) cat_update(hfsmp, &dcp->c_desc, &dcp->c_attr, NULL, NULL);
5285 error = cp_setxattr (NULL, entry, hfsmp, attr.ca_fileid, XATTR_CREATE);
5293 delete_err = cat_delete (hfsmp, &out_desc, &attr);
5301 (void) cat_update(hfsmp, &dcp->c_desc, &dcp->c_attr, NULL, NULL);
5310 hfs_systemfile_unlock(hfsmp, lockflags);
5320 hfs_volupdate(hfsmp, vnodetype == VDIR ? VOL_MKDIR : VOL_MKFILE,
5336 hfs_end_transaction(hfsmp);
5377 error = hfs_getnewvnode(hfsmp, dvp, cnp, &out_desc, gnv_flags, &attr,
5392 if (hfsmp->hfs_flags & HFS_QUOTAS) {
5425 hfs_end_transaction(hfsmp);
5455 hfs_vgetrsrc(struct hfsmount *hfsmp, struct vnode *vp, struct vnode **rvpp,
5594 to_desc.cd_parentcnid = hfsmp->hfs_private_desc[FILE_HARDLINKS].cd_cnid;
5605 lockflags = hfs_systemfile_lock(hfsmp, SFL_CATALOG, HFS_SHARED_LOCK);
5642 if (hfsmp->hfs_flags & HFS_STANDARD) {
5650 error = cat_lookup (hfsmp, descptr, 1, (struct cat_desc*)NULL,
5654 error = cat_idlookup (hfsmp, cp->c_fileid, 0, 1, NULL, NULL, &rsrcfork);
5657 hfs_systemfile_unlock(hfsmp, lockflags);
5680 error = hfs_getnewvnode(hfsmp, dvp, cn.cn_pnbuf ? &cn : NULL,
5887 struct hfsmount *hfsmp;
5889 hfsmp = VTOHFS(ap->a_dvp);
5890 if (hfsmp->hfs_flags & HFS_STANDARD) {